FileIO 0.2.0 updates

- various bugfixes
- integrated required library
- created minified sources
- made macros slightly more flexible
This commit is contained in:
nathanriggs 2018-12-24 02:14:04 -06:00
parent 16c1731e54
commit 03636aa196
29 changed files with 8855 additions and 3352 deletions

File diff suppressed because it is too large Load Diff

File diff suppressed because it is too large Load Diff

View File

@ -0,0 +1,8 @@
10 HOME
20 PRINT "BUILDING EXEC FILE..."
30 PRINT CHR$ (4);"OPEN RUNDEMO.EXEC"
40 PRINT CHR$ (4);"WRITE RUNDEMO.EXEC"
50 PRINT "BLOAD FILEIO.DEMO"
60 PRINT "CALL -151"
70 PRINT "6000G"
80 PRINT CHR$ (4);"CLOSE RUNDEMO.EXEC"

View File

@ -0,0 +1,3 @@
BLOAD FILEIO.DEMO
CALL -151
6000G

View File

@ -0,0 +1,109 @@
*
*``````````````````````````````*
* BINLOAD :: BINARY LOAD *
*- -*
* SIMPLY BLOADS INTO MEMORY AS *
* SPECIFIED BY THE STRING *
* PASSED AS A PARAMETER. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* LDA #>SADDR ; STRING ADDR *
* PHA *
* LDA #<SADDR *
* PHA *
* JSR BINLOAD *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* LO BYTE OF STRING ADDRESS *
* HI BYTE OF STRING ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BINLOAD
*
** GET RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
** GET PARAMETERS
*
PLA
STA ADDR2 ; CMD STRING ADDR
PLA
STA ADDR2+1
*
LDA #$8D
JSR FCOUT
LDA #$84 ; CTRL-D
JSR FCOUT
LDA #$C2 ; B
JSR FCOUT
LDA #$CC ; L
JSR FCOUT
LDA #$CF ; O
JSR FCOUT
LDA #$C1 ; A
JSR FCOUT
LDA #$C4 ; D
JSR FCOUT
LDA #$A0 ; [SPACE]
JSR FCOUT
*
** NOW SEND STRING TO COUT
*
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
*
** NOW PRESS RETURN AND PRAY
*
LDA #$8D
JSR FCOUT
*
** RESTORE RETURN ADDRESS
*
LDA RETADR+1
PHA
LDA RETADR
PHA
*
RTS
*
** DATA
*
:SLEN DS 1
*

View File

@ -0,0 +1,46 @@
*
BINLOAD
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR2
PLA
STA ADDR2+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDA #$C2
JSR FCOUT
LDA #$CC
JSR FCOUT
LDA #$CF
JSR FCOUT
LDA #$C1
JSR FCOUT
LDA #$C4
JSR FCOUT
LDA #$A0
JSR FCOUT
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
LDA #$8D
JSR FCOUT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1

View File

@ -0,0 +1,110 @@
*
*``````````````````````````````*
* BINSAVE :: BINARY SAVE *
*- -*
* SIMPLY DOES A BINARY SAVE *
* WITH THE COMMAND LINE PARAMS *
* SPECIFIED IN THE STRING AT *
* THE GIVEN ADDRESS. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* LDA #>SADDR ; STRING ADDR *
* PHA *
* LDA #<SADDR *
* PHA *
* JSR BINSAVE *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* LO BYTE OF STRING ADDRESS *
* HI BYTE OF STRING ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BINSAVE
*
** GET RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
** GET PARAMETERS
*
PLA
STA ADDR2 ; CMD STRING ADDR
PLA
STA ADDR2+1
*
LDA #$8D
JSR FCOUT
LDA #$84 ; CTRL-D
JSR FCOUT
LDA #$C2 ; B
JSR FCOUT
LDA #$D3 ; S
JSR FCOUT
LDA #$C1 ; A
JSR FCOUT
LDA #$D6 ; V
JSR FCOUT
LDA #$C5 ; E
JSR FCOUT
LDA #$A0 ; [SPACE]
JSR FCOUT
*
** NOW SEND STRING TO COUT
*
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
*
** NOW PRESS RETURN AND PRAY
*
LDA #$8D
JSR FCOUT
*
** RESTORE RETURN ADDRESS
*
LDA RETADR+1
PHA
LDA RETADR
PHA
*
RTS
*
** DATA
*
:SLEN DS 1
*

View File

@ -0,0 +1,46 @@
*
BINSAVE
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR2
PLA
STA ADDR2+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDA #$C2
JSR FCOUT
LDA #$D3
JSR FCOUT
LDA #$C1
JSR FCOUT
LDA #$D6
JSR FCOUT
LDA #$C5
JSR FCOUT
LDA #$A0
JSR FCOUT
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
LDA #$8D
JSR FCOUT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1

View File

@ -0,0 +1,52 @@
*
*``````````````````````````````*
* DISKOP : DISK OPERATION RWTS *
*- -*
* GENERAL PURPOSE ROUTINE FOR *
* READING AND WRITING TO A *
* DISK VIA TRACKS AND SECTORS. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DISKOP
*
:CLEAR
LDA #00
STA IOB_EVOL
*
LDA #>IOB
LDY #<IOB
JSR RWTS
BCC :EXIT
:ERR LDA IOB_ERR
LDX #00
STX $48
:EXIT RTS
*

View File

@ -0,0 +1,14 @@
*
DISKOP
*
:CLEAR
LDA #00
STA IOB_EVOL
LDA #>IOB
LDY #<IOB
JSR RWTS
BCC :EXIT
:ERR LDA IOB_ERR
LDX #00
STX $48
:EXIT RTS

View File

@ -0,0 +1,77 @@
*
*``````````````````````````````*
* DOSCMD : EXECUTE DOS COMMAND *
*- -*
* EXECUTES A DOS COMMAND THAT *
* IS PASSED VIA AN ASC THAT *
* FOLLOWS THE JSR TO THE *
* ROUTINE. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* JSR DOSCMD *
* ASC "CATALOG" *
* HEX 8D00 *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = CLOBBERED *
* .X = UNCHANGED *
* .A = UNCHANGED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DOSCMD
*
** GET RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
LDA #$8D
JSR FCOUT
LDA #$84 ; CTRL-D
JSR FCOUT
*
** NOW SEND STRING TO COUT
*
LDY #$01 ; POINT TO NEXT INSTR
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC ; RESTORE INSTR POINTER
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
*
RTS
*

View File

@ -0,0 +1,27 @@
DOSCMD
PLA
STA RETADR
PLA
STA RETADR+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDY #$01
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
RTS

View File

@ -3,9 +3,9 @@
* *
* -< FILEIO DEMO >- *
* *
* VERSION 00.00.01 *
* VERSION 00.02.00 *
* *
* 03/04/1980 *
* 22-DEC-2018 *
* *
********************************
* *
@ -19,257 +19,238 @@
CYC AVE
EXP ONLY
DSK FILEIO.DEMO
*
OBJ $BFE0
ORG $6000
*
*``````````````````````````````*
* TOP INCLUDES (PUTS, MACROS) *
* TOP INCLUDES (HOOKS,MACROS) *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
PUT DECS
USE FILEIO.MAC
USE REQUIRED.MAC
PUT REQUIRED.HOOKS
*
USE FILEIO.MAC
PUT FILEIO.HOOKS
*
OBJ $BFE0
ORG $6000
*
*``````````````````````````````*
* PROGRAM MAIN BODY *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
*
*
** BIG LUMPS -- HIGH LEVEL CODE
*
*
*
*
** PUT A FEW VALUES AT $300 TO PROVE
** BSAVING AND BLOADING
*
LDA #0
STA $300
LDA #1
STA $301
LDA #2
STA $302
LDA #3
STA $303
*
*
** BSAVE DOES A DOS BINARY SAVE WITH THE
** COMMAND LINE PARAMETERS STORED IN THE
** STRING CONTAINED AT THE SPECIFIED ADDRESS.
*
** FOR INSTANCE, IF THE STRING CONTAINS:
** TEST,A$300,L$100
** SPCIFYING THE NAME OF THE FILE, THE ADDRESS
** OFF THE MEMORY TO STORE, AND THE LENGTH
** TO SAVE, THE BSAVE ROUTINE WILL EXECUTE
** THE COMMAND: BSAVE TEST,A$300,L$100
*
** MACRO: _BSAV TESTSTR
*
LDA #>TESTSTR
PHA
LDA #<TESTSTR
PHA
JSR BSAVE
*
** NOW CLEAR THE 1,2,3 STORED IN $300 TO
** SHOW THAT IT WAS LOADED AGAIN
*
LDA #0
STA $300
STA $301
STA $302
STA $303
*
** BLOAD SIMPLY BLOADS PREVIOUSLY BSAVED DATA
** INTO THE SPECIFIED ADDRESS IN THE STRING
*
** MACRO: _BLOD TESTLD
*
LDA #>TESTLD
PHA
LDA #<TESTLD
PHA
JSR BLOAD
*
*
** CMD SIMPLY RUNS A DOS COMMAND. THIS CAN BE USED
** TO READ AND WRITE TEXT FILES, BUT THAT REQUIRES
** AN EXTRA STEP (SEE BELOW). OTHERWISE, IT'S JUST
** A MATTER OF CALLING THE SUBROUTINE, THEN HAVING
** AN ASC THAT FOLLOWS WITH THE DOS COMMAND.
*
** MACRO: _CMD "CATALOG"
*
JSR CMD
ASC "CATALOG"
HEX 8D00
*
*
** TO ACCESS TEXT FILES, WE HAVE TO GO INTO
** INDIRECT MODE TO FOOL DOS INTO THINKING A
** PROGRAM IS RUNNING. THE CAVEAT IS THAT WE
** MUST JUMP TO 3D0 (REENTRY) TO TERMINTE THE
** PROGRAM INSTEAD OF USING RTS. THIS IS THE
** SAME ISSUE WHEN USING COUT, HOWEVER, SO IT
** IS PRETTY STANDARD.
*
** MACRO: _TMOD
*
JSR TMODE ; ENTER TEXT OPERATION MODE
*
*
** NOW LET'S WRITE A TEXT FILE USING A MIX
** OF CMD AND THE FPRINT COMMAND
*
** MACRO: _FPRN "THIS IS A TEST."
*
JSR CMD
ASC "OPEN TEXT1"
HEX 8D00
JSR CMD
ASC "WRITE TEXT1"
HEX 8D00
JSR FPRINT
ASC "THIS IS A TEST."
HEX 8D00
JSR CMD
ASC "CLOSE TEXT1"
HEX 8D00
*
*
** NOW LET'S READ THAT FILE WITH FINPUT, WHICH
** SIMPLY USES THE MONITOR INPUT ROUTINE AND THEN
** COPIES THE BUFFER TO THE SPECIFIED LOCATION.
** YOU CAN ALSO USE FGET, WHICH STORES A SINGLE
** CHARACTER FROM THE FILE INTO THE ACCUMULATOR.
*
** MACRO: _FINP $300
*
JSR CMD
ASC "OPEN TEXT1"
HEX 8D00
JSR CMD
ASC "READ TEXT1"
HEX 8D00
LDA #>$300 ; PUT READ STRING HERE
PHA
LDA #<$300
PHA
JSR FINPUT
JSR CMD
ASC "CLOSE TEXT1"
HEX 8D00
*
*
** FPSTR WRITES A STRING TO A TEXT FILE
** THAT RESIDES IN A SPECIFIC ADDRESS.
*
** MACRO: _FPRN TSTR
*
JSR CMD
ASC "OPEN T.TEST"
HEX 8D00
JSR CMD
ASC "WRITE T.TEST"
HEX 8D00
LDA #>TSTR
PHA
LDA #<TSTR
PHA
JSR FPSTR
JSR CMD
ASC "CLOSE T.TEST"
HEX 8D00
*
** _FGET SIMPLY GETS A SINGLE CHARACTER FROM
** THE GIVEN FILE AND STORES IT IN THE
** ACCUMULATOR.
*
_CMD "OPEN T.TEST"
_CMD "READ T.TEST"
_FGET
_CMD "CLOSE T.TEST"
*
*
********************************
********************************
* *
* NOTE: FOR THIS TO WORK *
* PROPERLY, THE DEMO HAS TO BE *
* BLOADED, THEN EXECUTED VIA *
* THE MONITOR (6000G). IF THIS *
* IS NOT DONE, YOU WILL GET A *
* "FILE NOT FOUND" ERROR WHEN *
* DOING FILE OPERATIONS. *
* *
* FOR YOUR OWN PROJECTS, A WAY *
* TO WORK AROUND THIS IS TO *
* USE AN EXEC FILE TO BLOAD *
* AND EXECUTE THE CODE. *
* *
********************************
********************************
*
_PRNT " ",8D8D8D8D8D
_PRNT "FILE INPUT/OUTPUT MACROS",8D
_PRNT "------------------------",8D8D
_PRNT "THE BSAVE MACRO SAVES THE GIVEN",8D
_PRNT "ADDRESS RANGE UNDER THE SPECIFIED",8D
_PRNT "BINARY FILE. THE ARGUMENT IS SIMPLY",8D
_PRNT "A STRING THAT WOULD MATCH THE ARGUMENTS",8D
_PRNT "OF A TYPICAL BSAVE STATEMENT IN DOS.",8D8D
_PRNT "BSAVE 'TEST,A$800,L$100' SAVES THE",8D
_PRNT "$100 BYTES LOCATED AT $800 IN THE FILE",8D
_PRNT "TEST.",8D8D
_PRNT "LET'S PUT SOMETHING INTO $300 TO",8D
_PRNT "TEST IT OUT.",8D8D
LDY #0
LP
TYA
STA $800,Y
INY
CPY #$100
BNE LP
_WAIT
_DUMP $800;#$100
_WAIT
_PRNT "BSAVE 'TEST,A$800,L$100'...."
BSAVE "TEST,A$800,L$100"
_PRNT "DONE!",8D8D
_PRNT "NOW LET'S CLEAR $100 BYTES AT",8D
_PRNT "$800 BEFORE WE RELOAD IT WITH BLOAD.",8D8D
LDY #0
LP2
LDA #0
STA $800,Y
INY
CPY #$100
BNE LP2
_DUMP $800;#$100
*
_PRNT " ",8D8D
_PRNT "NOW WE CAN BLOAD TEST TO GET $800",8D
_PRNT "BACK INTO THE STATE WE PUT IT.",8D8D
_PRNT "BLOAD 'TEST'...",8D
_WAIT
BLOAD "TEST"
_PRNT " ",8D8D
_PRNT "DONE!",8D8D
_DUMP $0800;#$100
_PRNT " ",8D8D
_WAIT
*
_PRNT "THE CMD MACRO SIMPLY EXECUTES A",8D
_PRNT "DOS COMMAND, ALONG WITH ANY ARGUMENTS",8D
_PRNT "PASSED TO IT. CMD 'CATALOG', FOR INSTANCE,",8D
_PRNT "RETURNS:",8D8D
_WAIT
CMD "CATALOG"
_WAIT
*
_PRNT " ",8D8D8D
_PRNT "TYPICALLY, THE CMD MACRO IS ALSO",8D
_PRNT "USED FOR PREPARING TO READ OR WRITE",8D
_PRNT "TEXT FILES. HOWEVER, BEFORE THIS CAN",8D
_PRNT "BE ACCOMPLISHED, THE TMODE MACRO",8D
_PRNT "MUST BE RUN TO TRICK APPLESOFT INTO",8D
_PRNT "BELIEVING IT ISN'T IN IMMEDIATE MODE.",8D8D
_PRNT "TMODE HAS NO ARGUMENTS. THUS, THE",8D
_PRNT "FOLLOWING PREPARES US TO OPEN A TEXT",8D
_PRNT "FILE TO BE WRITTEN TO:",8D8D
_PRNT "TMDOE",8D
_PRNT "CMD 'OPEN T.TEXTFILE'",8D
_PRNT "CMD 'WRITE T.TEXTFILE'",8D8D
_WAIT
*
_PRNT "WE CAN NOW PRINT TO THIS FILE WITH",8D
_PRNT "THE FPRN MACRO. THIS MACRO EITHER",8D
_PRNT "PRINTS A GIVEN LINE OF TEXT TO THE FILE,",8D
_PRNT "FOLLOWED BY A RETURN ($8D), OR PRINTS",8D
_PRNT "THE CHARACTERS IN A STRING AT A GIVEN",8D
_PRNT "ADDRESS. IN THE LATTER CASE, THE LENGTH",8D
_PRNT "OF THE STRING IS NOT PRESERVED; ONLY",8D
_PRNT "THE ASCII IS.",8D8D
_PRNT "FPRN 'ALL IS WELL THAT ENDS WELL.'",8D
_PRNT "FPRN RETORT",8D8D
TMODE
CMD "OPEN T.TEXTFILE"
CMD "WRITE T.TEXTFILE"
FPRN "ALL IS WELL THAT ENDS WELL."
FPRN RETORT
CMD "CLOSE T.TEXTFILE"
_PRNT " ",8D8D8D
_PRNT "PUTS THE LITERAL PHRASE AND A PHRASE",8D
_PRNT "STORED IN THE RETORT ADDRESS INTO",8D
_PRNT "THE FILE.",8D
_WAIT
_PRNT " ",8D8D8D
_PRNT "THEN, LIKE ALWAYS, WE MUST CLOSE",8D
_PRNT "THE FILE VIA CMD:",8D8D
_PRNT "CMD 'CLOSE T.TEXTFILE'",8D8D8D
_WAIT
_PRNT "FINALLY, TO READ THIS TEXT FILE",8D
_PRNT "WE SIMPLY NEED TO OPEN THE",8D
_PRNT "FILE FOR READING VIA THE CMD MACRO,",8D
_PRNT "THEN USE THE FINP MACRO TO READ A ",8D
_PRNT "LINE OF TEXT AND STORE IT IN",8D
_PRNT "MEMORY:",8D8D
_PRNT "CMD 'OPEN T.TEXTFILE'",8D
_PRNT "CMD 'READ T.TEXTFILE'",8D
_PRNT "FINP RETURN",8D
_PRNT "FINP PARAM",8D
_PRNT "CMD 'CLOSE T.TEXTFILE'",8D8D
CMD "OPEN T.TEXTFILE"
CMD "READ T.TEXTFILE"
FINP RETURN
FINP PARAM
CMD "CLOSE T.TEXTFILE"
_WAIT
_DUMP RETURN;RETURN
_DUMP PARAM;PARAM
_WAIT
*
_PRNT " ",8D8D
_PRNT "THESE STRINGS ARE NOW STORED IN",8D
_PRNT "[RETURN] AND [PARAM], RESPECTIVELY,",8D
_PRNT "WITH A PRECEDING LENGTH BYTE. THESE",8D
_PRNT "CAN BE PRINTED WITH THE SPRN MACRO",8D
_PRNT "FOUND IN THE STRINGS LIBRARY.",8D8D8D
_WAIT
*
********************************
********************************
********************************
* *
* D A N G E R D A N G E R *
* W A R N I N G *
* *
********************************
********************************
********************************
********************************
*
** THE FOLLOWING CODE DOES LOW
** LEVEL DISK ACCESS, WHICH COULD
** SERIOUSLY CORRUPT YOUR DISK.
_PRNT "********************************",8D
_PRNT "********************************",8D8D
_PRNT " WARNING!!!",8D8D
_PRNT "********************************",8D
_PRNT "********************************",8D8D
_PRNT "AT THIS POINT, YOU WANT TO EJECT",8D
_PRNT "THE CURRENT DISK, AND PUT IN",8D
_PRNT "A DISK THAT YOU DON'T MIND ",8D
_PRNT "HAVING TO REFORMAT. ",8D8D
_PRNT "THE REST OF THE ROUTINES ARE",8D
_PRNT "LOW LEVEL DISK ACCESS PROCEDURES,",8D
_PRNT "AND CAN SERIOUSLY DAMAGE A DISK!",8D8D
_PRNT "<<< PRESS A KEY ONCE YOU'RE READY >>>",8D8D
_WAIT
*
** MAKE SURE YOU USE THESE ROUTINES
** ONLY WHEN YOU HAVE BACKUPS AND
** KNOW WHAT YOU'RE DOING!
*
*
** _SLOT SETS THE SLOT FOR RWTS
** LOW-LEVEL DISK OPERATIONS.
** THERE IS NO ACTUAL ROUTINE FOR
** THIS IN THE LIBRARY; IT ONLY EXISTS
** AS A MACRO.
*
_SLOT #6
*
** THE REST OF THE COMMANDS UP UNTIL
** _RWTS FOLLOW A SIMILAR PATTERN, AND ALL
** CHANGE THE IOB TABLE.
*
*
_DRIV #2 ; CHANGE DRIVE
*
_COMM #1 ; SET FOR READ
*
_DBUF $1000 ; DISK BUFFER AREA
*
_TRAK #2 ; SET TRACK
_SECT #2 ; SET SECTOR
*
_RWTS
BRK
*
** THE PRECEDING READS FROM TRACK 2, SECTOR 2
** OF DRIVE 2 IN SLOT 6, AND COPIES IT TO $1000.
*
** THERE ARE PLENTY OF OTHER USES HERE, BUT FOR
** THE SAKE OF SAFETY, WE WON'T BE SHOWING ANY
** DISK WRITE OPERATIONS. HOWEVER, THERE WILL BE A
** DISK DEDICATED TO THIS IN THE FUTURE, BUT WITHOUT
** THE SOURCE CODE ON IT.
*
*
*
** LITTLE LUMPS -- MID/LOW LEVEL
_PRNT "LOW-LEVEL DISK ACCESS IS DONE VIA",8D
_PRNT "THE STANDARD RWTS ROUTINE, WITH A",8D
_PRNT "FEW MACROS THROWN IN TO MAKE IT *FEEL*",8D
_PRNT "MORE SERIALIZED. THE FOLLOWING MACROS",8D
_PRNT "ALTER THE RWTS ROUTINE'S BEAHVIOR:",8D8D
_PRNT "SLOT : SETS THE RWTS SLOT",8D
_PRNT "DRIVE: SETS THE RWTS DRIVE",8D
_PRNT "TRACK: SETS THE TRACK TO BE WRITTEN/READ",8D
_PRNT "SECT : SETS THE SECTOR TO BE READ/WRITTEN",8D
_PRNT "SETDR: SET RWTS TO READ MODE",8D
_PRNT "SETDW: SET RWTS TO WRITE MODE",8D
_PRNT "DBUFF: SET THE READ/WRITE BUFFER ADDRESS",8D8D
_WAIT
_PRNT "EACH OF THESE SETTINGS ARE INHERITED",8D
_PRNT "FROM THE PREVIOUS STATE; IF YOU ARE",8D
_PRNT "ALREADY USING SECTOR 6, DRIVE 1, FOR",8D
_PRNT "EXAMPLE, THEN YOU DON'T HAVE TO SET IT AGAIN",8D
_PRNT "UNLESS YOU WANT THOSE SETTINGS CHANGED.",8D
_PRNT "THIS LIBRARY ALSO USES THE SAME IOB",8D
_PRNT "TABLE AS THE OPERATING SYSTEM (DOS OR",8D
_PRNT "PRODOS) TO CARRY OVER ANY PREVIOUS SETTINGS.",8D8D
_WAIT
*
_PRNT "ONCE THE SETTINGS ARE AS DESIRED,",8D
_PRNT "YOU USE THE DRWTS MACRO TO CALL",8D
_PRNT "THE RWTS ROUTINE TO MAKE THE ",8D
_PRNT "APPROPRIATE READ OR WRITE CHANGE TO",8D
_PRNT "THE DISK.",8D8D
_PRNT "FOR THE SAKE OF PLAYING IT SAFE,",8D
_PRNT "WE WON'T BE DOING THAT HERE--YOU CAN",8D
_PRNT "EXPERIMENT ON YOUR OWN WITH THESE CALLS;",8D
_PRNT "THAT WAY IF SOMETHING BAD HAPPENS,",8D
_PRNT "IT'S ON YOU--NOT ME! :)",8D8D8D
_WAIT
*
JMP REENTRY
*
** DATA
*
TESTSTR STR "TEST,A$300,L$100"
TESTLD STR "TEST,A$300"
TSTR STR "COMMUNISM WILL WIN!"
*
*
*``````````````````````````````*
* BOTTOM INCLUDES *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
*
** BOTTOM INCLUDES
*
PUT FILEIO.LIB
PUT REQUIRED.LIB
*
RETORT STR "IF YOU ARE RICH, ANYHOW..."
*

View File

@ -7,26 +7,20 @@
* CONTACT: NATHAN.RIGGS@ *
* OUTLOOK.COM *
* *
* VERSION: 0.1.2 *
* DATE: 30-OCT-2018 *
* VERSION: 0.2.0 *
* DATE: 22-DEC-2018 *
* ASSEMBLER: MERLIN 8 PRO *
* *
* LICENSE: APACHE 2.0, WHERE *
* APPLICABLE. CODE INSPIRED *
* BY THE WORKS OF OTHERS MAY *
* FALL UNDER A DIFFERENT *
* LICENSE (NOTED IN ROUTINE). *
* *
* OS: DOS 3.3 *
* LICENSE: APACHE 2.0 *
* *
*------------------------------*
* *
* LIST OF ROUTINES *
* *
* BSAVE : SAVE BINARY FILE *
* BLOAD : LOAD BINARY FILE *
* TMODE : TEXT FILE OPS MODE *
* CMD : EXEC DOS COMMAND *
* TMODE : SET TEXT IO MODE *
* BINSAVE : SAVE BINARY FILE *
* BINLOAD : LOAD BINARY FILE *
* TXTMODE : TEXT FILE OPS MODE *
* DOSCMD : EXEC DOS COMMAND *
* FPRINT : PRINT TO FILE *
* FPSTR : FILE PRINT STRING *
* FINPUT : GET LINE FROM TEXTF *
@ -34,7 +28,7 @@
*=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-*
*
*``````````````````````````````*
* BSAVE :: BINARY SAVE *
* BINSAVE :: BINARY SAVE *
*- -*
* SIMPLY DOES A BINARY SAVE *
* WITH THE COMMAND LINE PARAMS *
@ -54,7 +48,7 @@
* PHA *
* LDA #<SADDR *
* PHA *
* JSR BSAVE *
* JSR BINSAVE *
*- -*
* ENTRY *
* *
@ -72,12 +66,12 @@
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = UNCHANGED *
* X = UNCHANGED *
* A = CLOBBERED; TRASH *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BSAVE
BINSAVE
*
** GET RETURN ADDRESS
*
@ -143,7 +137,7 @@ BSAVE
:SLEN DS 1
*
*``````````````````````````````*
* BLOAD :: BINARY LOAD *
* BINLOAD :: BINARY LOAD *
*- -*
* SIMPLY BLOADS INTO MEMORY AS *
* SPECIFIED BY THE STRING *
@ -162,7 +156,7 @@ BSAVE
* PHA *
* LDA #<SADDR *
* PHA *
* JSR BLOAD *
* JSR BINLOAD *
*- -*
* ENTRY *
* *
@ -180,12 +174,12 @@ BSAVE
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = UNCHANGED *
* X = UNCHANGED *
* A = CLOBBERED; TRSAH *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BLOAD
BINLOAD
*
** GET RETURN ADDRESS
*
@ -251,7 +245,7 @@ BLOAD
:SLEN DS 1
*
*``````````````````````````````*
* TMODE :: TEXT FILE OPS MODE *
* TXTMODE :: TEXT FILE MODE *
*- -*
* THIS ROUTINE FOOLS DOS INTO *
* THINKING IT IS IN NON- *
@ -266,9 +260,6 @@ BLOAD
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
*- -*
* ENTRY *
* *
* TOP OF STACK *
@ -283,12 +274,12 @@ BLOAD
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = UNCHANGED *
* X = UNCHANGED *
* A = CLOBBERED; TRASH *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
TMODE
TXTMODE
*
LDA #$40
STA LANG ; LANG = FP
@ -298,7 +289,7 @@ TMODE
RTS
*
*``````````````````````````````*
* CMD :: EXECUTE DOS COMMAND *
* DOSCMD : EXECUTE DOS COMMAND *
*- -*
* EXECUTES A DOS COMMAND THAT *
* IS PASSED VIA AN ASC THAT *
@ -314,7 +305,7 @@ TMODE
*- -*
* USAGE: *
* *
* JSR CMD *
* JSR DOSCMD *
* ASC "CATALOG" *
* HEX 8D00 *
*- -*
@ -332,12 +323,12 @@ TMODE
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = CLOBBERED *
* X = UNCHANGED *
* A = UNCHANGED *
* .Y = CLOBBERED *
* .X = UNCHANGED *
* .A = UNCHANGED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
CMD
DOSCMD
*
** GET RETURN ADDRESS
*
@ -417,9 +408,9 @@ CMD
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = CLOBBERED *
* X = UNCHANGED *
* A = CLOBBERED *
* .Y = CLOBBERED *
* .X = UNCHANGED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FPRINT
@ -499,9 +490,9 @@ FPRINT
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = CLOBBERED *
* X = CLOBBERED *
* A = CLOBBERED *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FINPUT
@ -584,9 +575,9 @@ FINPUT
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = CLOBBERED *
* X = CLOBBERED *
* A = CLOBBERED *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FPSTR
@ -660,9 +651,9 @@ FPSTR
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* Y = CLOBBERED *
* X = CLOBBERED *
* A = CLOBBERED *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DISKOP

View File

@ -7,121 +7,95 @@
* CONTACT: NATHAN.RIGGS@ *
* OUTLOOK.COM *
* *
* VERSION: 0.1.2 *
* DATE: 30-OCT-2018 *
* VERSION: 0.2.0 *
* DATE: 22-DEC-2018 *
* ASSEMBLER: MERLIN 8 PRO *
* *
* LICENSE: APACHE 2.0 LICENSE, *
* WHERE APPLICABLE. CODE *
* INSPIRED BY OR COPIED FROM *
* OTHERS MAY FALL UNDER A *
* DIFFERENT LICENSE. I WILL *
* DO MY BEST TO NOTIFY SUCH *
* CASES. *
* OS: DOS 3.3 *
* LICENSE: APACHE 2.0 *
* *
*------------------------------*
* *
* THIS IS A MACRO LIBRARY FOR *
* FILE INPUT AND OUTPUT, AS *
* WELL AS DISK OPERATIONS. IT *
* USES FILEIO.LIB AND *
* DISKS.LIB. *
* WELL AS DISK OPERATIONS. *
* *
*------------------------------*
* *
* LIST OF MACROS *
* *
* _BSAV : BINARY SAVE *
* _BLOD : BINARY LOAD *
* _TMOD : TEXT FILE OP MODE *
* _CMD : EXECUTE DOS COMMAND *
* _FPRN : PRINT TO FILE *
* _FINP : INPUT LINE FROM FILE *
* _FGET : GET CHAR FROM FILE *
* _SLOT : SET RWTS SLOT *
* _DRIV : SET RWTS DRIVE *
* _TRAK : SET RWTS TRACK *
* _SECT : SET RWTS SECTOR *
* _COMM : RWTS COMMAND; RD/WRT *
* _DBUF : SET BUFFER ADDRESS *
* _RWTS : CALL THE RWTS ROUTE *
* BSAVE : BINARY SAVE *
* BLOAD : BINARY LOAD *
* TMODE : TEXT FILE OP MODE *
* CMD : EXECUTE DOS COMMAND *
* FPRN : PRINT TO FILE *
* FINP : INPUT LINE FROM FILE *
* SLOT : SET RWTS SLOT *
* DRIVE : SET RWTS DRIVE *
* TRACK : SET RWTS TRACK *
* SECT : SET RWTS SECTOR *
* SETDR : SET RWTS READ *
* SETDW : SET RWTS WRITE *
* DBUFF : SET BUFFER ADDRESS *
* DRWTS : CALL THE RWTS ROUTE *
* *
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
*
*``````````````````````````````*
* _BLOD : LOAD A BINARY FILE *
* BLOAD : LOAD A BINARY FILE *
*- -*
* LOAD INTO THE GIVEN ADDRESS *
* THE SPECIFIED BINARY FILE. *
* TO SAVE ON CYCLES, PARAMS *
* ARE PASSED AS ONE STRING AS *
* IT WOULD BE ENTERED ON THE *
* COMMAND LINE. *
*- -*
* PARAMETERS: *
* *
* PARAM1 = ADDRESS OF CMD STR *
* ]1 = ADDRESS OF CMD STR *
*- -*
* SAMPLE USAGE: *
* _BLOD "TEST,A$300" *
* BLOAD "TEST,A$300" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_BLOD MAC
LDA #>]1
PHA
LDA #<]1
PHA
JSR BLOAD
BLOAD MAC
_ISSTR ]1
JSR BINLOAD
<<<
*
*``````````````````````````````*
* _BSAV : SAVE TO BINARY FILE *
* BSAVE : SAVE TO BINARY FILE *
*- -*
* SAVE THE GIVEN ADDRESS RANGE *
* TO THE SPECIFIED FILE NAME. *
* TO SAVE ON CYCLES, PARAMS *
* ARE PASSED AS ONE STRING AS *
* IT WOULD BE ENTERED ON THE *
* COMMAND LINE. *
*- -*
* PARAMETERS: *
* *
* PARAM1 = ADDRESS OF CDM STR *
* ]1 = ADDRESS OF CDM STR *
*- -*
* SAMPLE USAGE: *
* _BSAV "TEST,A$300,L$100" *
* BSAVE "TEST,A$300,L$100" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_BSAV MAC
LDA #>]1
PHA
LDA #<]1
PHA
JSR BSAVE
BSAVE MAC
_ISSTR ]1
JSR BINSAVE
<<<
*
*``````````````````````````````*
* _TMOD : INIT TXTFILE OP MODE *
* TMODE : INIT TXTFILE OP MODE *
*- -*
* FOOLS DOS INTO THINKING THAT *
* WE ARE IN INDIRECT MODE TO *
* ALLOW FOR TEXT FILE READ AND *
* WRITE OPERATIONS. *
*- -*
* PARAMETERS: *
* *
* NO PARAMETERS *
*- -*
* SAMPLE USAGE: *
* _TMOD *
* TMODE *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_TMOD MAC
JSR TMODE
TMODE MAC
JSR TXTMODE
<<<
*
*``````````````````````````````*
* _CMD : EXECUTE DOS COMMAND *
* CMD : EXECUTE DOS COMMAND *
*- -*
* SIMPLY EXECUTES THE DOS CMD *
* AS IT IS PROVIDED IN THE *
@ -129,20 +103,20 @@ _TMOD MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = COMMAND STRING *
* ]1 = COMMAND STRING *
*- -*
* SAMPLE USAGE: *
* _CMD "CATALOG" *
* CMD "CATALOG" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_CMD MAC
JSR CMD
CMD MAC
JSR DOSCMD
ASC ]1
HEX 8D00
<<<
*
*``````````````````````````````*
* _FPRN : PRINT LINE TO FILE *
* FPRN : PRINT LINE TO FILE *
*- -*
* PRINTS THE GIVEN STRING TO *
* THE FILE THAT IS OPEN FOR *
@ -153,30 +127,30 @@ _CMD MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = EITHER A STRING OR *
* ]1 = EITHER A STRING OR *
* MEMLOC OF STRING *
*- -*
* SAMPLE USAGE: *
* _FPRN "TESTING" *
* _FPRN $300 *
* FPRN "TESTING" *
* FPRN $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_FPRN MAC
IF $,]1 ; IF PARAM IS ADDR
FPRN MAC
IF ",]1
JSR FPRINT
ASC ]1
HEX 8D00
ELSE ; IF PARAM IS ADDR
LDA #>]1
PHA
LDA #<]1
PHA
JSR FPSTR ; PRINT STRING
ELSE ; ASSUME A STRING
JSR FPRINT
ASC ]1
HEX 8D00
FIN
<<<
*
*``````````````````````````````*
* _FINP : GET LINE FROM TXTFILE*
* FINP : GET LINE FROM TXTFILE *
*- -*
* GETS A LINE OF TEXT FROM THE *
* FILE OPEN FOR READING AND *
@ -185,54 +159,36 @@ _FPRN MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = ADDRESS OF CDM STR *
* ]1 = ADDRESS OF CDM STR *
*- -*
* SAMPLE USAGE: *
* _FINP $300 *
* FINP $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_FINP MAC
FINP MAC
LDA #>]1
PHA
LDA #<]1
PHA
JSR FINPUT
<<<
*``````````````````````````````*
* _FGET : GET CHAR FROM TXTFILE*
*- -*
* GETS A SINGLE CHAR FROM THE *
* FILE OPEN FOR READING AND *
* STORES IT IN THE ACCUMULATOR *
*- -*
* PARAMETERS: *
* *
* NO PARAMETERS *
*- -*
* SAMPLE USAGE: *
* _FGET *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_FGET MAC
JSR FGET
<<<
*
*``````````````````````````````*
* _SLOT : CHANGE RWTS IOB SLOT *
* SLOT : CHANGE RWTS IOB SLOT *
*- -*
* CHANGES THE SLOT VALUE IN *
* CHANGES THE SLOT VALUE IN *
* THE IOB TABLE FOR THE RWTS *
* ROUTINE. JUST USES DOS IOB. *
*- -*
* PARAMETERS: *
* *
* PARAM1 = SLOT NUMBER *
* ]1 = SLOT NUMBER *
*- -*
* SAMPLE USAGE: *
* _SLOT #6 *
* SLOT #6 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_SLOT MAC
SLOT MAC
*
LDA ]1
STA SCRATCH
@ -245,7 +201,7 @@ _SLOT MAC
<<<
*
*``````````````````````````````*
* _DRIV : CHANGE RWTSIOB DRIVE *
* DRIVE : CHANGE RWTSIOB DRIVE *
*- -*
* CHANGES THE DRIVE VALUE IN *
* THE IOB TABLE FOR THE RWTS *
@ -253,20 +209,20 @@ _SLOT MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = DRIVE NUMBER *
* ]1 = DRIVE NUMBER *
*- -*
* SAMPLE USAGE: *
* _DRIV #1 *
* DRIVE #1 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_DRIV MAC
DRIVE MAC
*
LDA ]1
STA IOB_DRIV
<<<
*
*``````````````````````````````*
* _TRAK : CHANGE RWTSIOB TRACK *
* TRACK : CHANGE RWTSIOB TRACK *
*- -*
* CHANGES THE TRACK VALUE IN *
* THE IOB TABLE FOR THE RWTS *
@ -274,20 +230,20 @@ _DRIV MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = TRACK NUMBER *
* ]1 = TRACK NUMBER *
*- -*
* SAMPLE USAGE: *
* _TRAK #5 *
* TRACK #5 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_TRAK MAC
TRACK MAC
*
LDA ]1
STA IOB_TRAK
<<<
*
*``````````````````````````````*
* _SECT : CHANGE RWTS SECTOR *
* SECT : CHANGE RWTS SECTOR *
*- -*
* CHANGES THE SECTOR VALUE IN *
* THE IOB TABLE FOR THE RWTS *
@ -295,54 +251,65 @@ _TRAK MAC
*- -*
* PARAMETERS: *
* *
* PARAM1 = SECTOR NUMBER *
* ]1 = SECTOR NUMBER *
*- -*
* SAMPLE USAGE: *
* _SECT #3 *
* SECT #3 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_SECT MAC
SECT MAC
*
LDA ]1
STA IOB_SECT
<<<
*
*``````````````````````````````*
* _SECT : CHANGE RWTS COMMAND *
* SETDR : SET RWTS TO READMODE *
*- -*
* CHANGES THE RWTS COMMAND TO *
* EITHER READ OR WRITE ($01 OR *
* $02, RESPECTIVELY). *
*- -*
* PARAMETERS: *
* *
* PARAM1 = COMMAND VALUE *
* READ ($01). *
*- -*
* SAMPLE USAGE: *
* _COMM #1 *
* SETDR *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_COMM MAC
SETDR MAC
*
LDA ]1
LDA $01
STA IOB_COMM
<<<
*
*``````````````````````````````*
* _DBUF : CHANGE RWTS BUFFADDR *
* SETDW : SET RWTS TO WRITE *
*- -*
* CHANGES THE RWTS COMMAND TO *
* WRITE ($02). *
*- -*
* SAMPLE USAGE: *
* SETDW *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
SETDW MAC
*
LDA $02
STA IOB_COMM
<<<
*
*``````````````````````````````*
* DBUFF : CHANGE RWTS BUFFADDR *
*- -*
* CHANGES THE BUFFER ADDRESS *
* FOR THE RWTS SUBROUTINE *
*- -*
* PARAMETERS: *
* *
* PARAM1 = BUFFER ADDRESS *
* ]1 = BUFFER ADDRESS *
*- -*
* SAMPLE USAGE: *
* _BUFF $300 *
* DBUFF $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_DBUF MAC
DBUFF MAC
*
LDA #<]1
STA IOB_BUFL
@ -351,21 +318,17 @@ _DBUF MAC
<<<
*
*``````````````````````````````*
* _RWTS : EXECUTE RWTS ROUTINE *
* DRWTS : EXECUTE RWTS ROUTINE *
*- -*
* RUNS THE RWTS ROUTINE AFTER *
* THE APPROPRIATE VARIABLES IN *
* THE IOB TABLE ARE SET. *
*- -*
* PARAMETERS: *
* *
* NO PARAMETERS *
*- -*
* SAMPLE USAGE: *
* _RWTS *
* RWTS *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_RWTS MAC
DRWTS MAC
*
JSR DISKOP
<<<

View File

@ -0,0 +1,226 @@
*
BINSAVE
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR2
PLA
STA ADDR2+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDA #$C2
JSR FCOUT
LDA #$D3
JSR FCOUT
LDA #$C1
JSR FCOUT
LDA #$D6
JSR FCOUT
LDA #$C5
JSR FCOUT
LDA #$A0
JSR FCOUT
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
LDA #$8D
JSR FCOUT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1
*
BINLOAD
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR2
PLA
STA ADDR2+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDA #$C2
JSR FCOUT
LDA #$CC
JSR FCOUT
LDA #$CF
JSR FCOUT
LDA #$C1
JSR FCOUT
LDA #$C4
JSR FCOUT
LDA #$A0
JSR FCOUT
LDY #0
LDA (ADDR2),Y
STA :SLEN
LDY #1
:LP
LDA (ADDR2),Y
JSR FCOUT
INY
CPY :SLEN
BCC :LP
BEQ :LP
LDA #$8D
JSR FCOUT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1
*
TXTMODE
*
LDA #$40
STA LANG
STA CURLIN+1
LDA #$06
STA PROMPT
RTS
DOSCMD
PLA
STA RETADR
PLA
STA RETADR+1
LDA #$8D
JSR FCOUT
LDA #$84
JSR FCOUT
LDY #$01
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
RTS
*
FPRINT
PLA
STA RETADR
PLA
STA RETADR+1
LDY #$01
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
RTS
*
FINPUT
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR1
PLA
STA ADDR1+1
LDX #0
JSR FGETLN
STX :SLEN
CPX #0
BEQ :EXIT
:INP_CLR
LDY #0
LDA :SLEN
STA (ADDR1),Y
:LP
LDA $0200,Y
INY
STA (ADDR1),Y
CPY :SLEN
BNE :LP
:EXIT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1
*
FPSTR
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR1
PLA
STA ADDR1+1
LDY #0
LDA (ADDR1),Y
STA :SLEN
:LP
INY
LDA (ADDR1),Y
JSR FCOUT
CPY :SLEN
BNE :LP
:EXIT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1
*
DISKOP
*
:CLEAR
LDA #00
STA IOB_EVOL
LDA #>IOB
LDY #<IOB
JSR RWTS
BCC :EXIT
:ERR LDA IOB_ERR
LDX #00
STX $48
:EXIT RTS

100
disks/disk6_fileio/T.FINPUT Normal file
View File

@ -0,0 +1,100 @@
*
*``````````````````````````````*
* FINPUT: READ LINE FROM TFILE *
*- -*
* INPUTS A LINE FROM A TEXT *
* FILE AND STORES IT AS A *
* STRING AT THE SPECIFIED *
* MEMORY LOCATION. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* JSR CMD *
* ASC "OPEN TEXT1" *
* HEX 8D00 *
* JSR CMD *
* ASC "READ TEXT1" *
* HEX 8D00 *
* LDA #>STRLOC ; STRING LOC *
* PHA *
* LDA #<STRLOC *
* PHA *
* JSR FINPUT *
* JSR CMD *
* ASC "CLOSE TEXT1" *
* HEX 8D00 *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FINPUT
*
** SAVE RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
** GET PARAMETERS
*
PLA
STA ADDR1
PLA
STA ADDR1+1
*
LDX #0
JSR FGETLN
STX :SLEN
CPX #0
BEQ :EXIT
*
:INP_CLR
LDY #0
LDA :SLEN
STA (ADDR1),Y ; PUT LENGTH AT START
:LP
LDA $0200,Y ; KEYBOARD BUFFER
INY
STA (ADDR1),Y
CPY :SLEN
BNE :LP
*
:EXIT
*
** RESTORE RETURN ADDRESS
*
LDA RETADR+1
PHA
LDA RETADR
PHA
*
RTS
*
** DATA
*
:SLEN DS 1
*

View File

@ -0,0 +1,33 @@
*
FINPUT
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR1
PLA
STA ADDR1+1
LDX #0
JSR FGETLN
STX :SLEN
CPX #0
BEQ :EXIT
:INP_CLR
LDY #0
LDA :SLEN
STA (ADDR1),Y
:LP
LDA $0200,Y
INY
STA (ADDR1),Y
CPY :SLEN
BNE :LP
:EXIT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1

View File

@ -0,0 +1,81 @@
*
*``````````````````````````````*
* FPRINT : JUST PRINTS TO COUT *
*- -*
* PRINTS A STRING TO A TEXT *
* FILE THAT IS SPECIFIED IN AN *
* ASC THAT FOLLOWS THE JSR TO *
* THE SUBROUTINE. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
* JSR CMD *
* ASC "OPEN TEXT1" *
* HEX 8D00 *
* JSR CMD *
* ASC "WRITE TEXT1" *
* HEX 8D00 *
* JSR FPRINT *
* ASC "THIS IS A TEST." *
* HEX 8D00 *
* JSR CMD *
* ASC "CLOSE TEXT1" *
* HEX 8D00 *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = CLOBBERED *
* .X = UNCHANGED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FPRINT
*
** GET RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
** NOW SEND STRING TO COUT
*
LDY #$01 ; POINT TO NEXT INSTR
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC ; RESTORE INSTR POINTER
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
*
RTS
*

View File

@ -0,0 +1,25 @@
*
FPRINT
*
PLA
STA RETADR
PLA
STA RETADR+1
LDY #$01
:LP
LDA (RETADR),Y
BEQ :DONE
JSR FCOUT
INY
BNE :LP
:DONE
CLC
TYA
ADC RETADR
STA RETADR
LDA RETADR+1
ADC #$00
PHA
LDA RETADR
PHA
RTS

View File

@ -0,0 +1,78 @@
*
*``````````````````````````````*
* FPSTR : PRINT STRING TO FILE *
*- -*
* PRINTS THE SPECIFIED STRING *
* AT GIVEN LOCATION TO THE *
* FILE OPEN AND SET TO BE *
* WRITTEN. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* USAGE: *
* *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = CLOBBERED *
* .X = CLOBBERED *
* .A = CLOBBERED *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FPSTR
*
** SAVE RETURN ADDRESS
*
PLA
STA RETADR
PLA
STA RETADR+1
*
** GET PARAMETERS
*
PLA
STA ADDR1
PLA
STA ADDR1+1
*
LDY #0
LDA (ADDR1),Y
STA :SLEN
:LP
INY
LDA (ADDR1),Y
JSR FCOUT
CPY :SLEN
BNE :LP
:EXIT
*
** RESTORE RETURN ADDRESS
*
LDA RETADR+1
PHA
LDA RETADR
PHA
*
RTS
*
** DATA
*
:SLEN DS 1
*

View File

@ -0,0 +1,27 @@
*
FPSTR
*
PLA
STA RETADR
PLA
STA RETADR+1
PLA
STA ADDR1
PLA
STA ADDR1+1
LDY #0
LDA (ADDR1),Y
STA :SLEN
:LP
INY
LDA (ADDR1),Y
JSR FCOUT
CPY :SLEN
BNE :LP
:EXIT
LDA RETADR+1
PHA
LDA RETADR
PHA
RTS
:SLEN DS 1

View File

@ -0,0 +1,46 @@
*
*``````````````````````````````*
* DECLARATIONS.PUT *
*- -*
* USED IN CONJUNCTION WITH *
* OTHER PUT FILES. DEFINES *
* BASIC DECLARATIONS USED *
* ACROSS DIFFERENT ROUTINES *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
** ADDRESS STORAGE LOCATIONS FOR
** INDIRECT ADDRESSING.
*
ADDR1 EQU $06
ADDR2 EQU $08
ADDR3 EQU $EB
ADDR4 EQU $ED
*
** SCRATCHPAD ZERO PAGE LOCATIONS AND
** DEDICATED ZERO PAGE ADDRESS TO HOLD
** A RETURN ADDRESS PASSED VIA THE STACK
*
SCRATCH EQU $19
SCRATCH2 EQU $1E
RETADR EQU $FE
*
** ZERO PAGE ADDRESSES DEDICATED TO PASSING
** BACK RESULTS WHEN THERE ARE MORE THAN
** THREE BYTES BEING PASSED (AXY) AND THE
** USE OF THE STACK IS IMPRACTICAL OR TOO SLOW
*
RESULT EQU $FA
RESULT2 EQU $FC
*
** VARIOUS HOOKS USED BY ALL ROUTINES
*
REENTRY EQU $3D0
*
** ERROR HANDLING MEMORY LOCATIONS
*
** THIS DESIGNATES A 16-BYTE BLOCK OF MEMORY
** THAT HOLDS DATA RELATED TO IDENTIFYING
** RUNTIME VALUES FOR DEBUGGING.
*
ERRLOC EQU $0C00
*

View File

@ -0,0 +1,235 @@
*
JMP ENDVARS
*
*``````````````````````````````*
* REQUIRED.LIB *
*- -*
* GLOBAL ROUTINES AND *
* VARIABLES EITHER USED BY THE *
* LIBRARY OR PROVIDED FOR DEMO *
* USE OR DEBUGGING PURPOSES. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
********************************
* *
* GLOBAL ROUTINES *
* *
********************************
*
*``````````````````````````````*
* __GETRET: GET RETURN *
*- -*
* COPIES THE DATA IN [RETURN] *
* TO THE SPECIFIED LOCATION. *
* LENGTH IS DETERMINED BY *
* VALUE OF RETLEN. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
__GETRET
*
LDY #255
PLA
STA ADDR1
PLA
STA ADDR1+1
*
:LP
INY
LDA RETURN,Y
STA (ADDR1),Y
CPY RETLEN
BNE :LP
LDA ADDR1+1
PHA
LDA ADDR1
PHA
RTS
*
*``````````````````````````````*
* __SETPARM: SET PARAMETER *
*- -*
* COPIES DATA FROM SPECIFIED *
* ADDRESS TO THE [PARAM] *
* LOCATION FOR PASSING TO *
* A ROUTINE. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
__SETPARM
*
LDY #255
PLA
STA ADDR1
PLA
STA ADDR1+1
*
:LP
INY
LDA (ADDR1),Y
STA PARAM,Y
CPY PARLEN
BNE :LP
LDA ADDR1+1
PHA
LDA ADDR1
PHA
RTS
*
*``````````````````````````````*
* __DUMP: DUMP DATA *
*- -*
* OUTPUTS DATA LOCATED AT THE *
* SPECIFIED ADDRESS IN HEX *
* FORMAT FOR SPECIFIED NUMBER *
* OF BYTES. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
__DUMP
*
PLA
STA :RET
PLA
STA :RET+1
PLA
STA :LENGTH
PLA
STA ADDR3
PLA
STA ADDR3+1
*
LDA #$8D
JSR $FDF0
LDA ADDR3+1
AND #$F0
LSR
LSR
LSR
LSR
TAX
LDA :HEXTAB,X
JSR $FDF0
LDA ADDR3+1
AND #$0F
TAX
LDA :HEXTAB,X
JSR $FDF0
LDA ADDR3
AND #$F0
LSR
LSR
LSR
LSR
TAX
LDA :HEXTAB,X
JSR $FDF0
LDA ADDR3
AND #$0F
TAX
LDA :HEXTAB,X
JSR $FDF0
LDA #186 ; :
JSR $FDF0
LDA #160 ; SPC
JSR $FDF0
*
LDY #0
:LP
LDA (ADDR3),Y
AND #$F0 ; MASK RIGHT
LSR
LSR
LSR
LSR
STA :LEFT
LDA (ADDR3),Y
AND #$0F ; MASK LEFT
STA :RIGHT
LDX :LEFT
LDA :HEXTAB,X
JSR $FDF0
LDX :RIGHT
LDA :HEXTAB,X
JSR $FDF0
LDA #160
JSR $FDF0
INY
CPY :LENGTH
BNE :LP
*
*LDA #$8D
*JSR $FDF0
LDA :RET+1
PHA
LDA :RET
PHA
*
RTS
*
:RET DS 2
:RIGHT DS 1
:LEFT DS 1
:LENGTH DS 1
:HEXTAB ASC "0123456789ABCDEF"
*
*``````````````````````````````*
* __P: PRINT FOLLOWING ASC *
*- -*
* THIS IS THE XPRINT ROUTINE *
* FROM STDIO.LIB, BUT STRIPPED *
* OF COMMENTS. FOR DEBUG. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
__P
PLA
STA ADDR1
PLA
STA ADDR1+1
LDY #1
:LP LDA (ADDR1),Y
BEQ :DONE
JSR $FDF0
INY
BNE :LP
:DONE CLC
TYA
ADC ADDR1
STA ADDR1
LDA ADDR1+1
ADC #0
PHA
LDA ADDR1
PHA
RTS
*
*``````````````````````````````*
* __W: WAIT FOR KEYPRESS *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
__W
JSR $FD0C
RTS
*
********************************
* *
* GLOBAL VARIABLES *
* *
********************************
*
** 256 BYTES DEDICATED TO RETURN
** VALUES OF VARIABLE LENGTH; CAN BE
** MODIFIED TO SUIT SMALLER OR LARGER
** NEEDS.
*
*
RETLEN DS 1 ; RETURN VALUE BYTE LENGTH
RETURN DS 256
*
** 256 BYTE VALUE DEDICATED TO LARGE
** OR VARIABLE LENGTH PARAMETERS. THIS
** CAN ALSO BE CHANGED TO FIT SMALLER OR
** LARGER BOUNDS.
*
PARLEN DS 1
PARAM DS 256
*
ENDVARS
*

View File

@ -0,0 +1,134 @@
********************************
* *
********************************
*
*``````````````````````````````*
* REQUIRED.MAC *
*- -*
* MACROS USED FOR CORE UTILS *
* AND LIBRARY ROUTINES. NOTE *
* THAT THE LIBRARIES DO NOT *
* USE THESE MACROS, BUT MAY *
* USE THE ROUTINES. THESE ARE *
* MERELY PROVIDED FOR THE SAKE *
* OF CONVENIENCE. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
*``````````````````````````````*
* _ISLIT: DETERMINES WHETHER A *
* PARAM IS LITERAL OR *
* NOT, AND CHANGES *
* APPROPRIATELY. FOR *
* MACRO USE ONLY. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_ISLIT MAC
IF #=]1 ; IF ]1 IS A LITERAL
LDA ]1/$100 ; GET HI
PHA
LDA ]1 ; GET LO
PHA
ELSE ; ]1 IS ADDRESS
LDA ]1+1 ; SO GET HIGH VAL FROM ADDR
PHA
LDA ]1 ; THEN LO VAL
PHA
FIN
<<<
*
*``````````````````````````````*
* _ISSTR: DETERMINES WHETHER A *
* PARAM IS A STRING OR *
* NOT, AND CHANGES *
* APPROPRIATELY. FOR *
* MACRO USE ONLY. *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_ISSTR MAC
IF "=]1 ; IF ]1 IS A STRING
*
** STORE STRING AT TEMP ADDRESS, THEN
** PUSH TEMP ADDRESS
*
JMP STRCONT
]STRTMP STR ]1
STRCONT
LDY #0
LDA ]STRTMP
STA PARLEN
STA PARAM
]STRLP1
INY
LDA ]STRTMP,Y
STA PARAM,Y
CPY PARLEN
BNE ]STRLP1
*
LDA #>PARAM ; GET HI
PHA
LDA #<PARAM ; GET LO
PHA
ELSE ; ]1 IS ADDRESS
LDA #>]1 ; SO GET HIBYTE OF ADDR
PHA
LDA #<]1 ; THEN LOBYTE
PHA
FIN
<<<
*
*``````````````````````````````*
* _GRET: GET RETURN VALUE *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_GRET MAC
LDA #>]1
PHA
LDA #<]1
PHA
JSR __GETRET
<<<
*
*``````````````````````````````*
* _SPAR: SET PARAMETER *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_SPAR MAC
LDA #>]1
PHA
LDA #<]1
PHA
JSR __SETPARM
<<<
*
*``````````````````````````````*
* _DUMP: DUMP DATA *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_DUMP MAC
LDA #>]1
PHA
LDA #<]1
PHA
LDA ]2
PHA
JSR __DUMP
<<<
*
*``````````````````````````````*
* _PRNT: PRINT STRING *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_PRNT MAC
JSR __P
ASC ]1
HEX 00
<<<
*
*``````````````````````````````*
* _WAIT: WAIT FOR KEYPRESS *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
_WAIT MAC
JSR __W
<<<
*

View File

@ -0,0 +1,2 @@
ALL IS WELL THAT ENDS WELL.
IF YOU ARE RICH, ANYHOW...

View File

@ -0,0 +1,45 @@
*
*``````````````````````````````*
* TXTMODE :: TEXT FILE MODE *
*- -*
* THIS ROUTINE FOOLS DOS INTO *
* THINKING IT IS IN NON- *
* IMMEDIATE MODE. THIS IS *
* TO ALLOW FOR READING AND *
* WRITING OF TEXT FILES. *
*- -*
* CLOBBERS: *
* *
* FLAGS: ????---- REG: AXYM *
*- -*
* CYCLES: ??? *
* SIZE: *
*- -*
* ENTRY *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
*- -*
* EXIT *
* *
* TOP OF STACK *
* *
* LOW BYTE OF RETURN ADDRESS *
* HI BYTE OF RETURN ADDRESS *
* *
* .Y = UNCHANGED *
* .X = UNCHANGED *
* .A = CLOBBERED; TRASH *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
TXTMODE
*
LDA #$40
STA LANG ; LANG = FP
STA CURLIN+1 ; RUNNING PROG
LDA #$06
STA PROMPT ; NOT DIRECT MODE
RTS
*

View File

@ -0,0 +1,9 @@
*
TXTMODE
*
LDA #$40
STA LANG
STA CURLIN+1
LDA #$06
STA PROMPT
RTS

View File

@ -1,128 +1,146 @@
0300- 00 BRK
0301- 01 02 ORA ($02,X)
0303- 03 ???
0304- 2C A2 03 BIT $03A2
0307- 38 SEC
0308- A9 00 LDA #$00
030A- 8D ED 03 STA $03ED
030D- A9 09 LDA #$09
030F- 8D EE 03 STA $03EE
0312- 68 PLA
0313- 4C 14 C3 JMP $C314 ROM:XFER
0316- 48 PHA
0317- 2C A2 03 BIT $03A2
031A- 38 SEC
031B- A9 4B LDA #$4B
031D- 8D ED 03 STA $03ED
0320- A9 09 LDA #$09
0322- 8D EE 03 STA $03EE
0325- 68 PLA
0326- 4C 14 C3 JMP $C314 ROM:XFER
0329- 48 PHA
032A- 2C A2 03 BIT $03A2
032D- 38 SEC
032E- A9 40 LDA #$40
0330- 8D ED 03 STA $03ED
0333- A9 0C LDA #$0C
0335- 8D EE 03 STA $03EE
0338- 68 PLA
0339- 4C 14 C3 JMP $C314 ROM:XFER
033C- 48 PHA
033D- 2C A2 03 BIT $03A2
0340- 38 SEC
0341- A9 94 LDA #$94
0343- 8D ED 03 STA $03ED
0346- A9 0C LDA #$0C
0348- 8D EE 03 STA $03EE
034B- 68 PLA
034C- 4C 14 C3 JMP $C314 ROM:XFER
034F- 48 PHA
0350- 2C A2 03 BIT $03A2
0353- 38 SEC
0354- A9 12 LDA #$12
0356- 8D ED 03 STA $03ED
0359- A9 0D LDA #$0D
035B- 8D EE 03 STA $03EE
035E- 68 PLA
035F- 4C 14 C3 JMP $C314 ROM:XFER
0362- 20 F0 E5 JSR $E5F0
0365- 48 PHA
0366- 2C A2 03 BIT $03A2
0369- 38 SEC
036A- A9 A0 LDA #$A0
036C- 8D ED 03 STA $03ED
036F- A9 0B LDA #$0B
0371- 8D EE 03 STA $03EE
0374- 68 PLA
0375- 4C 14 C3 JMP $C314 ROM:XFER
0378- 24 9C BIT $9C
037A- 70 1F BVS $039B
037C- 6C 90 00 JMP ($0090)
037F- 20 7C 03 JSR $037C
0382- 48 PHA
0383- 2C A2 03 BIT $03A2
0386- 38 SEC
0387- A9 B8 LDA #$B8
0389- 8D ED 03 STA $03ED
038C- A9 09 LDA #$09
038E- 8D EE 03 STA $03EE
0391- 68 PLA
0392- 4C 14 C3 JMP $C314 ROM:XFER
0395- 20 02 E6 JSR $E602
0398- 4C 82 03 JMP $0382
039B- 60 RTS
039C- 20 1B E0 JSR $E01B
039F- 4C 00 D1 JMP $D100
03A2- 40 RTI
03A3- 1C 1D 1E TRB $1E1D
03A6- 00 BRK
03A7- 00 BRK
03A8- FF ???
03A9- 1F ???
03AA- 00 BRK
03AB- 00 BRK
03AC- 20 21 00 JSR $0021
03AF- 22 ???
03B0- 23 ???
03B1- 24 25 BIT $25
03B3- 26 27 ROL $27
03B5- 28 PLP
03B6- 00 BRK
03B7- 00 BRK
03B8- FF ???
03B9- FF ???
03BA- 00 BRK
03BB- 29 2A AND #$2A
03BD- 2B ???
03BE- 00 BRK
03BF- 2C 2D 2E BIT $2E2D
03C2- 2F ???
03C3- 30 31 BMI $03F6
03C5- 32 00 AND ($00)
03C7- 00 BRK
03C8- 33 ???
03C9- 34 35 BIT $35,X
03CB- 36 37 ROL $37,X
03CD- 38 SEC
03CE- 00 BRK
03CF- 39 4C BF AND $BF4C,Y
03D2- 9D 4C 84 STA $844C,X
03D5- 9D 4C FD STA $FD4C,X
03D8- AA TAX
03D9- 4C B5 B7 JMP $B7B5
03DC- AD 0F 9D LDA $9D0F
03DF- AC 0E 9D LDY $9D0E
03E2- 60 RTS
03E3- AD C2 AA LDA $AAC2
03E6- AC C1 AA LDY $AAC1
03E9- 60 RTS
03EA- 4C 51 A8 JMP $A851
03ED- A0 A5 LDY #$A5
03EF- 4C 59 FA JMP $FA59 F8ROM:OLDBRK
03F2- BF ???
03F3- 9D 38 4C STA $4C38,X
03F6- 00 BRK
03F7- 03 ???
03F8- 4C 03 E0 JMP $E003
03FB- 4C 65 FF JMP $FF65 F8ROM:MON
03FE- 65 FF ADC $FF
0800- 00 BRK
0801- 01 02 ORA ($02,X)
0803- 03 ???
0804- 04 05 TSB $05
0806- 06 07 ASL $07
0808- 08 PHP
0809- 09 0A ORA #$0A
080B- 0B ???
080C- 0C 0D 0E TSB $0E0D
080F- 0F ???
0810- 10 11 BPL $0823
0812- 12 13 ORA ($13)
0814- 14 15 TRB $15
0816- 16 17 ASL $17,X
0818- 18 CLC
0819- 19 1A 1B ORA $1B1A,Y
081C- 1C 1D 1E TRB $1E1D
081F- 1F ???
0820- 20 21 22 JSR $2221
0823- 23 ???
0824- 24 25 BIT $25
0826- 26 27 ROL $27
0828- 28 PLP
0829- 29 2A AND #$2A
082B- 2B ???
082C- 2C 2D 2E BIT $2E2D
082F- 2F ???
0830- 30 31 BMI $0863
0832- 32 33 AND ($33)
0834- 34 35 BIT $35,X
0836- 36 37 ROL $37,X
0838- 38 SEC
0839- 39 3A 3B AND $3B3A,Y
083C- 3C 3D 3E BIT $3E3D,X
083F- 3F ???
0840- 40 RTI
0841- 41 42 EOR ($42,X)
0843- 43 ???
0844- 44 ???
0845- 45 46 EOR $46
0847- 47 ???
0848- 48 PHA
0849- 49 4A EOR #$4A
084B- 4B ???
084C- 4C 4D 4E JMP $4E4D
084F- 4F ???
0850- 50 51 BVC $08A3
0852- 52 53 EOR ($53)
0854- 54 ???
0855- 55 56 EOR $56,X
0857- 57 ???
0858- 58 CLI
0859- 59 5A 5B EOR $5B5A,Y
085C- 5C ???
085D- 5D 5E 5F EOR $5F5E,X
0860- 60 RTS
0861- 61 62 ADC ($62,X)
0863- 63 ???
0864- 64 65 STZ $65
0866- 66 67 ROR $67
0868- 68 PLA
0869- 69 6A ADC #$6A
086B- 6B ???
086C- 6C 6D 6E JMP ($6E6D)
086F- 6F ???
0870- 70 71 BVS $08E3
0872- 72 73 ADC ($73)
0874- 74 75 STZ $75,X
0876- 76 77 ROR $77,X
0878- 78 SEI
0879- 79 7A 7B ADC $7B7A,Y
087C- 7C 7D 7E JMP ($7E7D,X)
087F- 7F ???
0880- 80 81 BRA $0803
0882- 82 ???
0883- 83 ???
0884- 84 85 STY $85
0886- 86 87 STX $87
0888- 88 DEY
0889- 89 8A BIT #$8A
088B- 8B ???
088C- 8C 8D 8E STY $8E8D
088F- 8F ???
0890- 90 91 BCC $0823
0892- 92 93 STA ($93)
0894- 94 95 STY $95,X
0896- 96 97 STX $97,Y
0898- 98 TYA
0899- 99 9A 9B STA $9B9A,Y
089C- 9C 9D 9E STZ $9E9D
089F- 9F ???
08A0- A0 A1 LDY #$A1
08A2- A2 A3 LDX #$A3
08A4- A4 A5 LDY $A5
08A6- A6 A7 LDX $A7
08A8- A8 TAY
08A9- A9 AA LDA #$AA
08AB- AB ???
08AC- AC AD AE LDY $AEAD
08AF- AF ???
08B0- B0 B1 BCS $0863
08B2- B2 B3 LDA ($B3)
08B4- B4 B5 LDY $B5,X
08B6- B6 B7 LDX $B7,Y
08B8- B8 CLV
08B9- B9 BA BB LDA $BBBA,Y
08BC- BC BD BE LDY $BEBD,X
08BF- BF ???
08C0- C0 C1 CPY #$C1
08C2- C2 ???
08C3- C3 ???
08C4- C4 C5 CPY $C5
08C6- C6 C7 DEC $C7
08C8- C8 INY
08C9- C9 CA CMP #$CA
08CB- CB ???
08CC- CC CD CE CPY $CECD
08CF- CF ???
08D0- D0 D1 BNE $08A3
08D2- D2 D3 CMP ($D3)
08D4- D4 ???
08D5- D5 D6 CMP $D6,X
08D7- D7 ???
08D8- D8 CLD
08D9- D9 DA DB CMP $DBDA,Y
08DC- DC ???
08DD- DD DE DF CMP $DFDE,X
08E0- E0 E1 CPX #$E1
08E2- E2 ???
08E3- E3 ???
08E4- E4 E5 CPX $E5
08E6- E6 E7 INC $E7
08E8- E8 INX
08E9- E9 EA SBC #$EA
08EB- EB ???
08EC- EC ED EE CPX $EEED
08EF- EF ???
08F0- F0 F1 BEQ $08E3
08F2- F2 F3 SBC ($F3)
08F4- F4 ???
08F5- F5 F6 SBC $F6,X
08F7- F7 ???
08F8- F8 SED
08F9- F9 FA FB SBC $FBFA,Y
08FC- FC ???
08FD- FD FE FF SBC $FFFE,X