Jump to content
IGNORED

An In-Depth Look At... Series: "Nutting Manual" Supplement


ballyalley

Recommended Posts

An In-Depth Look At... Series: A Supplement to the "Nutting Manual"

By MCM Design (Michael Matte).

 

This multi-part programming tutorial series, first "published" online in July 2019, focuses on programming in Z80 assembly language and machine language. Special attention is paid to specifically programming the Bally Arcade/Astrocade, with an in-depth look at the "Nutting Manual." Specific instructions, Z80 programming examples and links to useful Astrocade/Z80 documents are provided. This series is initially set up for a beginner interested in programming in assembly language or machine language.

 

Here is a link to the main page of the series:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html

 

Note that most of these tutorials are RTF (Rich Text Format) documents. Many common word processors (such as Microsoft Office) can open these documents, including the freely available Open Office suites.

 

I will add each tutorial in the series as a separate post here.  As the series progresses, I will update this first post in the thread to link directly to each post.

 

Part 0: Series Start-Up/Introduction

Part 1: Pixel Color Register

Part 2: Color Map Parameters

Part 3: The Vertical Blank Register

 

Michael Matte, the author of the series, would like all comments and questions about the series to be posted in this thread.

 

It is the hope of both Michael and myself that this series provides the information needed for a neophyte Z80 programmer who wants to investigate how to specifically program the astrocade using the many routines built into the system.  Perhaps, some individuals will even be spurred to create some homebrew software.

 

Adam

Edited by ballyalley
Link to comment
Share on other sites

The first four articles in this series has already been written.  I will post links to all of them today.

 

An In-Depth Look At... series: A Supplement to the "Nutting Manual"

Part 0: Series Start-Up/Introduction.

By MCM Design (Michael Matte).
July 2019.

 

Here is a direct link to ballyalley.com with the 15-page introduction to the "In-Depth Look At... series:"

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtStart-UpIntroduction

 

Here is a very brief overview of the introduction:

 

Anyone interested in writing programs for their Bally/Astrocade in machine language or programming in assembly language will eventually learn about what is commonly referred to as the "Nutting Manual:"

 

https://ballyalley.com/ml/ml_docs/ml_docs.html#NuttingManual

 

This manual is packed with programming information for the Bally/Astrocade. From a programming viewpoint, the manual does provide details on the ROM's UPI processing and on-board subroutines, but does not provide examples so the reader can acquire thorough understanding as to how the UPI and subroutines function. The details it does provide, at times, are insufficient and can leave the reader desiring more info.

 

The intent of this "An In-Depth Look At ..." series is to supplement the "Nutting Manual" providing missing information plus stressing ML and assembly language program examples. The series will progress towards the presentation of programs with complex graphics and motion. Programs will also include extensive programming comments.

 

This series is not intended to teach the reader how to create ML programs or program in assembly language. Rather, the series will show how the on-board ROM subroutines can be used to display graphics, move non-blinking graphic patterns around the screen and perform many other tasks.

Link to comment
Share on other sites

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
Part 1: Pixel Color Register.
By MCM Design (Michael Matte).
July 2019.

 

Here is a direct link to ballyalley.com with the 6-page to the "In-Depth Look At... series" that concentrates on the Pixel Color Register:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtPixelColorRegister

 

Here is a very brief overview of Part 1:

 

There are 4 screen display parameters that must be initialized when the Bally/Astrocade console is powered on. The motherboard ROM executes a power up routine to initialize these screen parameters prior to displaying the system menu. The parameters are changed or initialized in all ROM cartridges and can be changed any time during execution of a program.

 

The 4 parameters are the color registers, the horizontal color boundary, the border background color and vertical blanking, all of which will be described in the first 3 lessons of this series.

Link to comment
Share on other sites

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
Part 2: Color Map Parameters.
By MCM Design (Michael Matte).
July 2019.

 

Here is a direct link to ballyalley.com with the 5-page to the "In-Depth Look At... series" that concentrates on the Color Map Parameters:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtColorMapParameters

 

Here is a very brief overview of Part 2:

 

The Bally/Astrocade color map parameters include the Horizontal Color Boundary, 8 color registers map and the border background colors. This tutorial covers these topics and includes example programs on how to use them.

Link to comment
Share on other sites

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
Part 3: The Vertical Blank Register: Output Port 0AH.
By MCM Design (Michael Matte).
July 2019.

 

Here is a direct link to ballyalley.com with the 6-page to the "In-Depth Look At... series" that concentrates on the The Vertical Blank Register:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtVerticalBlankRegister

 

Here is a very brief overview of Part 3:

 

The only RAM in the Bally/Astrocade console is screen RAM. Unfortunately, with this situation, variables, routine flags, data blocks, the Z80 stack area, etc, must be located in the bottom of the screen RAM area plus the extra 16 bytes of scratchpad RAM at 4FF0 thru 4FFFH. The hardware allows this data to be hidden from view by setting a vertical blanking line to the desired height. The NM system description, page 90, provides some additional info on vertical blanking.

 

This tutorial explains how to use the Vertical Blank Register using example programs and step-by-step methods to explain how to use the register to work for the programmer.

Link to comment
Share on other sites

  • 3 weeks later...

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
Part 4: An Introduction to the Magic RAM.
By MCM Design (Michael Matte).
August 2019.

 

Here is a direct link to ballyalley.com for the fourth article "In-Depth Look At... series" that concentrates on the Magic Ram fuctions:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtMagicRAM

 

"The Z80 instruction set has ample amount of bit manipulation instructions to write graphics to the screen RAM display. However, this means of writing graphics is not necessary, because the Bally/Astrocade computer's motherboard includes graphic hardware to manipulate screen bits or pixels faster and with less effort."

 

The "Magic System is enabled when data is written to a memory location (X) from 0 to 16K. A modified form of the data is actually written in memory location X+16K. The magic register determines how the data is modified [expansion, rotating or shifting; flopping; OR or XOR.]"

 

This tutorial explains how to use the Magic RAM using example programs and step-by-step methods.

 

Link to comment
Share on other sites

  • 3 weeks later...

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
Part 5: Custom Write Pattern.
By MCM Design (Michael Matte).
August 2019.

 

Here is a direct link to ballyalley.com for the fifth article "In-Depth Look At... series" that concentrates on custom WRITE patterns:

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtCustomWritePattern

 

The article shows how to write a "normal" pattern using a direct Z80 subroutine call (no UPI required, no UPI processing delay). A normal write is defined as a write not utilizing the magic expand, flop or rotator function. You can write a pattern in one of three ways when using a normal magic write. The Magic Register, bits 5 and 4, indicates which normal magic write is to be utilized by the magic hardware. The table below shows the set up for the Magic Register for the indicated magic write.

 

Here is a description of the included program example 5-1: Write a solid green reference byte at 4014H, Plop write a plane pattern beginning at address 4064H, Use standard MLM colors for this program, Plop write the pattern.

Link to comment
Share on other sites

Here is a direct link to ballyalley.com for the sixth article "In-Depth Look At... series" that concentrates on Custom Flop Patterns:

 

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
for the Bally/Astrocade Computer
Part 6: Custom Flop Pattern.
By MCM Design (Michael Matte).
August 2019.

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtCustomFlopPattern

 

This lesson is a continuation of the Lesson 5 example program, providing the option to flop write a pattern. Flopping a pattern requires a specific subroutine to direct the magic hardware. Like the normal write presented in LESSON 5, a flop write can also be written using one of the 3 magic functions plop,XOR,OR however, bit 6 in the Magic Register must be set to tell the magic hardware that a magic flop is being requested.

 

Here is a description of the included program example 6-1: This example uses the entire example program 5-1, but included with this program is the option to flop the plane pattern.

 

Link to comment
Share on other sites

  • 5 months later...

Here is a direct link to ballyalley.com for the seventh article "In-Depth Look At... series" that concentrates on Custom Expand Patterns:

 

An In-Depth Look At... series: A Supplement to the "Nutting Manual"
for the Bally/Astrocade Computer
Part 7: Custom Expand Pattern.
By MCM Design (Michael Matte).
January 2020.

 

https://ballyalley.com/ml/ml_docs/An_In-Depth_Look_At/An_In-Depth_Look_At.html#AnInDepthLookAtCustomExpandPattern

 

This lesson introduces the magic expand function, which allows a two color graphic pattern to be stored in one half the normal memory. For example, the Gunfight's graphic tree pattern seen on the TV screen is 2 bytes wide by 17 bytes high requiring a total of 34 bytes to be written (displayed) on the screen. This 2 color pattern, when utilizing the magic expand function, can be stored in memory using only 17 bytes, where in this case, each byte defines one horizontal pattern line of 2 bytes.

 

Here is a description of the included program example 7-1:

 

This example will write with expand one line of 2 bytes from just a single pattern byte. A single shifter byte will also be written at the end of this 2 byte expanded write so that the magic shifter can also be experimented with. The write with expand will occur 2 lines below a green reference byte located at the screen address 4014H, just like the magic writes in the previous lesson example programs. The reference byte will be written near the middle of the screen RAM area on the very first (top) line. The single pattern byte to be expanded, will be stored just below the program which begins at 4E10H.

Link to comment
Share on other sites

Join the conversation

You can post now and register later. If you have an account, sign in now to post with your account.
Note: Your post will require moderator approval before it will be visible.

Guest
Reply to this topic...

×   Pasted as rich text.   Paste as plain text instead

  Only 75 emoji are allowed.

×   Your link has been automatically embedded.   Display as a link instead

×   Your previous content has been restored.   Clear editor

×   You cannot paste images directly. Upload or insert images from URL.

Loading...
  • Recently Browsing   0 members

    • No registered users viewing this page.
×
×
  • Create New...