Re: Cinematronics Assembler Question

From: Paul Kahler <phkahler_at_Oakland.edu>
Date: Thu Mar 26 1998 - 17:00:47 EST

Hey!

  Nice job on the assembler. I'm not sure why that program doesn't work
unless one of the drawing opcodes is wrong (I don't remember them all).
one VERY important point which has no impact on your program... The RAM
and ROM are completely independant. You jumped over addresses 4-7 in your
program presumably because that's where your endpoints go? The thing is
all store & load instructions refer to RAM which has a completely
independant bus :-) Only one instruction can load from ROM (we call it
Lookup - Zonn calls it something else :) - it uses the 12 bit accumulator
as an address into the current bank of ROM and grabs one byte and stuffs
it back in the accumulator (writing 0's in the upper 4 bits). This shouldn't
affect your program, but you should be aware of it :-)
  One other thing. Sorry if you know this, but the ROMs actually contain
EVEN and ODD addresses. If you made a single rom image from the assembled
program it won't work. This is why all CineRoms come in pairs. The word
document that describes my menu program has a macro for splitting a single
4K chunk into the appropriate 2K chunks.
  BTW, I intend to provide commented source for the menu when it's done. It
has a general purpose text display subroutine. It even uses some multiplys
to center the game-names which can have different lengths.
  BTW2, Zonn seems to think you should use 2 WAI instructions in a row. I
don't know how his emulator handles WAI, but ours treats WAI as a NOP unless
there have been vectors drawn since the previous WAI. (got that Zonn?)
Also, please change the mnemonic from WAI to FRM as that is what is used to
maintain a constant frame rate by waiting for the FRAME signal. I didn't even
know there was a watchdog timer for a long time :-)
  Another general note: about that loop that starts at about $842 and counts
down until Not Minus... If you just load $042 in the accumulator and subtract
1 until EQUAL, it will be more readable. Turns out when you do an add or
subtract, the operand is actually compared to the current value in the
accumulator. Hence if you subtract 1 from 1 (resulting in zero) you'll set
the Equal flag :-) Really, it works. Zonn's documentation seems to think
the Carry flag works funny with subtraction, but it does a standard 2's
complement-add. Remember NoCarry IS a Borrow and NoBorrow is the same as
Carry - many processors work this way using the inverse of the carry flag
as a "borrow" flag.

Dunno if any of this helps, but I'll look at your code again after I check
the menu stuff at home.

Boy I ramble all over the map in these spontaneous responses...

--
 ___   __   _   _  _
|   \ /  \ | | | || |       phkahler@oakland.edu     Engineer/Programmer
|  _/| || || |_| || |__     " What makes someone care so much?
|_|  |_||_| \___/ |____)      for things another man can just ignore. " -S.H.
Received on Thu Mar 26 14:00:42 1998

This archive was generated by hypermail 2.1.8 : Fri Aug 01 2003 - 00:31:51 EDT