mirror of
https://github.com/nathanriggs/AppleIIAsm-Collection.git
synced 2024-06-02 06:41:34 +00:00
FileIO 0.2.0 updates
- various bugfixes - integrated required library - created minified sources - made macros slightly more flexible
This commit is contained in:
parent
16c1731e54
commit
03636aa196
File diff suppressed because it is too large
Load Diff
File diff suppressed because it is too large
Load Diff
8
disks/disk6_fileio/MAKEEXEC
Normal file
8
disks/disk6_fileio/MAKEEXEC
Normal 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"
|
3
disks/disk6_fileio/RUNDEMO.EXEC
Normal file
3
disks/disk6_fileio/RUNDEMO.EXEC
Normal file
|
@ -0,0 +1,3 @@
|
|||
BLOAD FILEIO.DEMO
|
||||
CALL -151
|
||||
6000G
|
109
disks/disk6_fileio/T.BINLOAD
Normal file
109
disks/disk6_fileio/T.BINLOAD
Normal 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
|
||||
*
|
46
disks/disk6_fileio/T.BINLOAD.MIN
Normal file
46
disks/disk6_fileio/T.BINLOAD.MIN
Normal 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
|
110
disks/disk6_fileio/T.BINSAVE
Normal file
110
disks/disk6_fileio/T.BINSAVE
Normal 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
|
||||
*
|
46
disks/disk6_fileio/T.BINSAVE.MIN
Normal file
46
disks/disk6_fileio/T.BINSAVE.MIN
Normal 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
|
52
disks/disk6_fileio/T.DISKOP
Normal file
52
disks/disk6_fileio/T.DISKOP
Normal 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
|
||||
*
|
14
disks/disk6_fileio/T.DISKOP.MIN
Normal file
14
disks/disk6_fileio/T.DISKOP.MIN
Normal 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
|
77
disks/disk6_fileio/T.DOSCMD
Normal file
77
disks/disk6_fileio/T.DOSCMD
Normal 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
|
||||
*
|
27
disks/disk6_fileio/T.DOSCMD.MIN
Normal file
27
disks/disk6_fileio/T.DOSCMD.MIN
Normal 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
|
|
@ -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..."
|
||||
*
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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
|
||||
<<<
|
||||
|
|
226
disks/disk6_fileio/T.FILEIO.MIN
Normal file
226
disks/disk6_fileio/T.FILEIO.MIN
Normal 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
100
disks/disk6_fileio/T.FINPUT
Normal 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
|
||||
*
|
33
disks/disk6_fileio/T.FINPUT.MIN
Normal file
33
disks/disk6_fileio/T.FINPUT.MIN
Normal 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
|
81
disks/disk6_fileio/T.FPRINT
Normal file
81
disks/disk6_fileio/T.FPRINT
Normal 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
|
||||
*
|
25
disks/disk6_fileio/T.FPRINT.MIN
Normal file
25
disks/disk6_fileio/T.FPRINT.MIN
Normal 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
|
78
disks/disk6_fileio/T.FPSTR
Normal file
78
disks/disk6_fileio/T.FPSTR
Normal 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
|
||||
*
|
27
disks/disk6_fileio/T.FPSTR.MIN
Normal file
27
disks/disk6_fileio/T.FPSTR.MIN
Normal 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
|
46
disks/disk6_fileio/T.REQUIRED.HOOKS
Normal file
46
disks/disk6_fileio/T.REQUIRED.HOOKS
Normal 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
|
||||
*
|
235
disks/disk6_fileio/T.REQUIRED.LIB
Normal file
235
disks/disk6_fileio/T.REQUIRED.LIB
Normal 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
|
||||
*
|
134
disks/disk6_fileio/T.REQUIRED.MAC
Normal file
134
disks/disk6_fileio/T.REQUIRED.MAC
Normal 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
|
||||
<<<
|
||||
*
|
2
disks/disk6_fileio/T.TEXTFILE
Normal file
2
disks/disk6_fileio/T.TEXTFILE
Normal file
|
@ -0,0 +1,2 @@
|
|||
ALL IS WELL THAT ENDS WELL.
|
||||
IF YOU ARE RICH, ANYHOW...
|
45
disks/disk6_fileio/T.TXTMODE
Normal file
45
disks/disk6_fileio/T.TXTMODE
Normal 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
|
||||
*
|
9
disks/disk6_fileio/T.TXTMODE.MIN
Normal file
9
disks/disk6_fileio/T.TXTMODE.MIN
Normal file
|
@ -0,0 +1,9 @@
|
|||
*
|
||||
TXTMODE
|
||||
*
|
||||
LDA #$40
|
||||
STA LANG
|
||||
STA CURLIN+1
|
||||
LDA #$06
|
||||
STA PROMPT
|
||||
RTS
|
|
@ -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
|
||||
|
|
Loading…
Reference in New Issue
Block a user