mirror of
https://github.com/fadden/6502bench.git
synced 2024-11-29 10:50:28 +00:00
8c87ce3004
If we have a bug, or somebody edits the project file manually, we can end up with a very wrong string, such as a null-terminated string that isn't, or a DCI string that has a mix of high and low ASCII from start to finish. We now check all incoming strings for validity, and discard any that fail the test. The verification code is shared with the extension script inline data formatter. Also, added a comment to an F8-ROM symbol I stumbled over.
158 lines
7.1 KiB
Plaintext
158 lines
7.1 KiB
Plaintext
; Copyright 2018 faddenSoft. All Rights Reserved.
|
|
; See the LICENSE.txt file for distribution terms (Apache 2.0).
|
|
;
|
|
; Sources:
|
|
; NiftyList, by Dave Lyons
|
|
; What's Where in the Apple, by William F. Luebbert
|
|
|
|
*SYNOPSIS Symbols from the Apple II monitor ROM
|
|
|
|
MON_WNDLEFT @ $20 ;left column of scroll window
|
|
MON_WNDWDTH @ $21 ;width of scroll window
|
|
MON_WNDTOP @ $22 ;top of scroll window
|
|
MON_WNDBTM @ $23 ;bottom of scsroll window
|
|
MON_CH @ $24 ;cursor horizontal displacement
|
|
MON_CV @ $25 ;cursor vertical displacement
|
|
MON_GBASL @ $26 ;base address for lo-res drawing (lo)
|
|
MON_GBASH @ $27 ;base address for lo-res drawing (hi)
|
|
MON_H2 @ $2C ;right end of horizontal line drawn by HLINE
|
|
MON_V2 @ $2D ;bottom of vertical line drawn by VLINE
|
|
MON_COLOR = $30 ;lo-res graphics color
|
|
MON_INVFLAG @ $32 ;text mask (255=normal, 127=flash, 63=inv)
|
|
MON_PROMPT @ $33 ;prompt character
|
|
MON_CSWL @ $36 ;character output hook (lo)
|
|
MON_CSWH @ $37 ;character output hook (hi)
|
|
MON_KSWL @ $38 ;character input hook (lo)
|
|
MON_KSWH @ $39 ;character input hook (hi)
|
|
MON_PCL @ $3A ;program counter save
|
|
MON_PCH @ $3B ;program counter save
|
|
MON_A1L @ $3C ;general purpose
|
|
MON_A1H @ $3D ;general purpose
|
|
MON_A2L @ $3E ;general purpose
|
|
MON_A2H @ $3F ;general purpose
|
|
MON_RNDL @ $4E ;low byte of KEYIN "random" value
|
|
MON_RNDH @ $4F ;high byte of KEYIN "random" value
|
|
|
|
MON_SPDBYT @ $F1 ;text output speed limiter
|
|
|
|
MON_BRKV @ $03F0 2 ;address of BRK handler
|
|
MON_SOFTEVEC @ $03F2 2 ;address of RESET handler
|
|
MON_PWREDUP @ $03F4 ;power-up RESET checksum
|
|
MON_USRADDR @ $03F8 3 ;jump to function that handles monitor Ctrl-Y
|
|
MON_NMIVEC @ $03FB 3 ;jump to function that handles NMI
|
|
MON_IRQADDR @ $03FE 2 ;address of IRQ handler
|
|
|
|
MON_PLOT @ $F800 ;lo-res plot at X=Y-reg, Y=Acc
|
|
MON_PLOT1 @ $F80E ;lo-res plot at X=Y-reg, Y per GBASL/H
|
|
MON_HLINE @ $F819 ;lo-res horiz line at Y=Acc with X from $2c
|
|
MON_VLINE @ $F828 ;lo-res vert line at X=Y-reg and Y from Acc to $2b
|
|
MON_CLRSCR @ $F832 ;clear lo-res screen to black
|
|
MON_CLRTOP @ $F836 ;clear top part of lo-res screen to black
|
|
MON_GBASCALC @ $F847 ;compute gfx base addr for line in Acc
|
|
MON_NXTCOL @ $F85F ;change lo-res color to (color)+3
|
|
MON_SETCOL @ $F864 ;set lo-res color to Acc
|
|
MON_SCRN @ $F871 ;load Acc with lo-res value at Y=Acc, X=X-reg
|
|
MON_INSDS1_2 @ $F88C
|
|
MON_INSDS2 @ $F88E
|
|
MON_GET816LEN @ $F890
|
|
MON_INSTDSP @ $F8D0 ;monitor/mini-asm display
|
|
MON_PRNTYX @ $F940 ;print Y-reg/X-reg as 4 hex digits
|
|
MON_PRNTAX @ $F941 ;print Acc/X-reg as 4 hex digits
|
|
MON_PRNTX @ $F944 ;print X-reg as 2 hex digits
|
|
MON_PRBLNK @ $F948 ;print 3 spaces
|
|
MON_PRBL2 @ $F94A ;print multiple spaces, count in X-reg
|
|
MON_PCADJ @ $F953 ;monitor/mini-asm PC adjust
|
|
MON_TEXT2COPY @ $F962
|
|
MON_OLDIRQ @ $FA40 ;autostart ROM IRQ handler
|
|
MON_BREAK @ $FA4C
|
|
MON_OLDBRK @ $FA59
|
|
MON_RESET @ $FA62
|
|
MON_PWRUP @ $FAA6
|
|
MON_SLOOP @ $FABA
|
|
MON_REGDSP @ $FAD7 ;display register contents
|
|
MON_RTBL @ $FB19
|
|
MON_PREAD @ $FB1E ;read paddle specifed by X-reg, return in Y-reg
|
|
MON_PREAD4 @ $FB21
|
|
MON_INIT @ $FB2F ;screen initialization
|
|
MON_SETTXT @ $FB39 ;set screen to text mode
|
|
MON_SETGR @ $FB40 ;set screen to graphics mode
|
|
MON_SETWND @ $FB4B ;set normal low-res graphics window
|
|
MON_SETWND2 @ $FB51
|
|
MON_TABV @ $FB5B ;place cursor at line (A-reg) and column (ch)
|
|
MON_APPLEII @ $FB60 ;clear screen and put "Apple II" into first line
|
|
MON_SETPWRC @ $FB6F
|
|
MON_VIDWAIT @ $FB78
|
|
MON_KBDWAIT @ $FB88
|
|
MON_VERSION @ $FBB3
|
|
MON_ZIDBYTE2 @ $FBBF
|
|
MON_ZIDBYTE @ $FBC0
|
|
MON_BASCALC @ $FBC1 ;calculate text base address
|
|
MON_BELL1 @ $FBDD ;sound bell regardless of output device
|
|
MON_BELL1_2 @ $FBE2
|
|
MON_BELL2 @ $FBE4 ;sound bell
|
|
MON_STORADV @ $FBF0
|
|
MON_ADVANCE @ $FBF4 ;move cursor right
|
|
MON_VIDOUT @ $FBFD ;output Acc as text
|
|
MON_BS @ $FC10 ;move cursor left
|
|
MON_UP @ $FC1A ;move cursor up
|
|
MON_VTAB @ $FC22 ;tab to row specified in Acc
|
|
MON_VTABZ @ $FC24
|
|
MON_CLREOP @ $FC42 ;clear screen from cursor to end of page
|
|
MON_HOME @ $FC58 ;clear screen and reset text output to top-left
|
|
MON_CR @ $FC62 ;perform a carriage return
|
|
MON_LF @ $FC66 ;perform a line feed
|
|
MON_SCROLL @ $FC70 ;scroll up one line
|
|
MON_CLREOL @ $FC9C ;clear to end of line
|
|
MON_CLREOLZ @ $FC9E
|
|
MON_WAIT @ $FCA8 ;delay for (26 + 27*Acc + 5*(Acc*Acc))/2 cycles
|
|
MON_NXTA4 @ $FCB4 ;increment A4
|
|
MON_NXTA1 @ $FCBA ;increment A1
|
|
MON_HEADR @ $FCC9 ;write cassette sync
|
|
MON_WRTAPE @ $FCE5 ;casssette write
|
|
MON_RD2BIT @ $FCFA ;cassette read
|
|
MON_RDKEY @ $FD0C ;read key
|
|
MON_FD10 @ $FD10
|
|
MON_RDKEY1 @ $FD18
|
|
MON_KEYIN @ $FD1B ;get next key input from keyboard hardware
|
|
MON_RDCHAR @ $FD35 ;calls RDKEY to get next char
|
|
MON_GETLNZ @ $FD67 ;get a line of input
|
|
MON_GETLN @ $FD6A ;get a line of input
|
|
MON_GETLN0 @ $FD6C
|
|
MON_GETLN1 @ $FD6F
|
|
MON_CROUT1 @ $FD8B
|
|
MON_CROUT @ $FD8E ;print a carriage return
|
|
MON_PRA1 @ $FD92 ;print CR, then hex of A1H/A1L, then minus sign
|
|
MON_PRBYTE @ $FDDA ;print Acc as two-digit hex number
|
|
MON_PRHEX @ $FDE3 ;print right nibble of Acc as single hex digit
|
|
MON_COUT @ $FDED ;print Acc to output device
|
|
MON_COUT1 @ $FDF0
|
|
MON_COUTZ @ $FDF6
|
|
MON_IDROUTINE @ $FE1F
|
|
MON_MOVE @ $FE2C ;memory move A1/A2 to A4
|
|
MON_LIST @ $FE5E ;disassemble 20 instructions (not on GS)
|
|
MON_SETINV @ $FE80 ;set video mode to inverse
|
|
MON_SETNORM @ $FE84 ;set video mode to normal
|
|
MON_SETKBD @ $FE89 ;reset char input handler to ROM
|
|
MON_INPORT @ $FE8B
|
|
MON_SETVID @ $FE93 ;reset char output handler to ROM
|
|
MON_OUTPORT @ $FE95
|
|
MON_GO @ $FEB6
|
|
MON_WRITE @ $FECD ;write data to cassette
|
|
MON_READ @ $FEFD ;read data from cassette
|
|
MON_READ2 @ $FF02 ;read data from cassette
|
|
MON_PRERR @ $FF2D ;print "ERR" and sound bell
|
|
MON_BELL @ $FF3A ;sound bell
|
|
MON_RESTORE @ $FF3F ;restore 6502 registers from $45-48
|
|
MON_SAVE @ $FF4A ;save 6502 registers to $45-49
|
|
MON_IORTS @ $FF58 ;JSR here to find out where one is
|
|
MON_OLDRST @ $FF59 ;RESET entry point
|
|
MON_MON @ $FF65 ;normal entry to monitor
|
|
MON_MONZ @ $FF69 ;reset and enter monitor
|
|
MON_MONZ2 @ $FF6C
|
|
MON_MONZ4 @ $FF70
|
|
MON_DIG @ $FF8A
|
|
MON_GETNUM @ $FFA7
|
|
MON_NXTCHR @ $FFAD ;part of GETLN input loop
|
|
MON_TOSUB @ $FFBE
|
|
MON_ZMODE @ $FFC7
|