• Please review our updated Terms and Rules here

Cromemco dazzler replica project

Perhaps you could create a CDOS disk with ASMB.COM, EDIT.COM and LINK.COM on it.

Copy the Dazzler files gdemo.z80 and graphz80.rel onto it also.

Then, try and assemble gdemo.z80 to make gdemo.com as follows:

ASMB gdemo
LINK gdemo,graphz80/E

The linker should respond with:

[xxxx yyyy zz]

Then immediately type:

SAVE gdemo.com zz

Where zz is the value that LINK gave us.

Then try and run gdemo and see if it works.

When we have shaken the bugs out of the build process we can modify gdemo.z80 and see if the changes are reflected in the executable.

This should provide us with a framework for creating our own programs.

Dave
Sweet, I'll give this a shot later tonight
 
Spotted this in the timing section of gdemo.z80, so I'm guessing gdemo was intended to run @ 4MHz

Code:
;
; (THE FOLLOWING ASSUME THE 4MHZ. CPU CLOCK)
;
SEC.:   EQU    10       ;10 * 0.1SEC. = 1SEC.
QUARTR: EQU    SEC./4   ;QUARTER-SECOND PAUSE
HALF:   EQU    SEC./2   ;HALF-SECOND PAUSE
 
It works! assembled/linked/saved no problems, ran it and it works perfectly. Trying a small mod now...
 
This is really exciting! Now I have to figure out how to use EDIT.COM - I did my editing on the PC and XMODEM'd the new Z80 file over there. Do you know if it's a pretty decent editor?
 
I think the answer is no, but there was no documentation for the graphz80.rel library right?
 
I recommend word star 3 or 4 for editing if you have the ram then wordstar 4 is better


All documentation is in the manuals,For the libraries.
 
Hi,

Have you tried the FELIX DISK yet? It's got some starter programs for animation ...

I'd like to see a dial-up modem program for two adversaries to battle in PONG, a Maze program like dual CHOMP, Battle Ship game etc.


.
 

Attachments

  • FELIX-DISK.zip
    58.2 KB · Views: 0
So for now I'm starting very simple, and going to try developing a Snake game. I've started with the GDEMO startup variables/routine and basic structure, and stripped out everything else.

Right now all I'm trying to do is draw lines around the outside of the screen to create a box/playing field. After fixing a small bug, I got the attached program to assemble & link. However, when I start the application it just exits back out to CDOS immediately. It doesn't print my message or do anything. I must be missing something simple but not sure what it is?

Also including the .PRN files for snake & gdemo in case comparing is useful?
 

Attachments

  • snakeprn.txt
    6.8 KB · Views: 8
  • snakez80.txt
    2.5 KB · Views: 4
  • gdemoprn.txt
    28.5 KB · Views: 3
Last edited:
On a related topic when I was playing around with my SOL and the CP/M assembler, there was also a line editor I tried. But I found it very difficult to use, so what I ended up doing for all the programs I made was to do the editing in notepad on the modern computer and then port that across to the SOL. Sort of cheating perhaps.

In the case of doing these sorts of things in my 5155 computer and the assembler I had there, I did all the editing in Borland's Brief, which is a really good easy to use editor that runs well in the IBM 5155.
 
Side question: where's a safe space in memory to start storing variables/data for my application?
 
I will check your program later.

To answer your question about variable storage, don't - that is what an assembler is good at doing!

Yes, the graphz80 documentation is available. I will get you a reference for it later.

Dave
 
I will check your program later.

To answer your question about variable storage, don't - that is what an assembler is good at doing!

Yes, the graphz80 documentation is available. I will get you a reference for it later.

Dave
Already found the doc & linked to it above. If I am not accessing a variable by a specific address, how do I allow the assembler to assign one?
 
If you look at the bottom of your snake program you will see some variables defined already. Try:

DAVE: DEFS 1 ; For an 8-bit byte.
FRED: DEFS 2 ; For a 16-bit word.

The parameter to DEFS is the number of bytes to reserve. A DEFS directive reserves space (in this case at the end of the program) but does not allocate an initial value to it. This makes the resulting file smaller, but you have to initialise the data yourself. Look at the alternatives to DEFS (e.g. DEFB and DEFW to reserve a byte or word AND initialise the default value WHEN THE PROGRAM IS INITIALLY LOADED).

By using this mechanism, you don't care where the variable is stored - the assembler takes care of that...

Dave
 
Your snake listing looks fine to me except for the jump back to the beginning - although that is what the original does (so it should work).

Can you confirm whether or not the introductory message "SNAKE FOR DAZZLER GRAPHICS..." does not appear on the console terminal?

Can you run the link program as follows please:

LINK
SNAKE
GRAPHZ80
/U
/E

Then invoke the SAVE SNAKE.COM zz command when link terminates (where zz is the number of pages output by link to us).

What I am trying to work out is whether the link command ran correctly and whether there are any undefined symbols (output after the /U option).

An undefined symbol would mean that a symbol is not defined. An undefined symbol (if used) will have a value of 0000h and will cause a CDOS warm boot if called.

Incidentally, CDOS version 01.07 (or later) should have a screen editor (SCREEN.COM). You may find that better!

Dave
 
Back
Top