AppleIIAsm-Collection/source/disk6_fileio/T.MAC.FILEIO

331 lines
8.6 KiB
Plaintext
Raw Normal View History

*
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
* *
* FILEIO.MAC *
* *
* AUTHOR: NATHAN RIGGS *
* CONTACT: NATHAN.RIGGS@ *
* OUTLOOK.COM *
* *
* VERSION: 0.3.0 *
* DATE: 23-JAN-2019 *
* ASSEMBLER: MERLIN 8 PRO *
* OS: DOS 3.3 *
* LICENSE: APACHE 2.0 *
* *
*------------------------------*
* *
* THIS IS A MACRO LIBRARY FOR *
* FILE INPUT AND OUTPUT, AS *
* WELL AS DISK OPERATIONS. *
* *
*------------------------------*
* *
* LIST OF MACROS *
* *
* BSAVE : BINARY SAVE *
* BLOAD : BINARY LOAD *
* AMODE : TURN ON APPLESOFT *
* 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 *
* *
*-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=*
*
*``````````````````````````````*
* BLOAD : LOAD A BINARY FILE *
*- -*
* LOAD INTO THE GIVEN ADDRESS *
* THE SPECIFIED BINARY FILE. *
*- -*
* PARAMETERS: *
* *
* ]1 = ADDRESS OF CMD STR *
*- -*
* SAMPLE USAGE: *
* BLOAD "TEST,A$300" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BLOAD MAC
_ISSTR ]1
JSR BINLOAD
<<<
*
*``````````````````````````````*
* BSAVE : SAVE TO BINARY FILE *
*- -*
* SAVE THE GIVEN ADDRESS RANGE *
* TO THE SPECIFIED FILE NAME. *
*- -*
* PARAMETERS: *
* *
* ]1 = ADDRESS OF CDM STR *
*- -*
* SAMPLE USAGE: *
* BSAVE "TEST,A$300,L$100" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
BSAVE MAC
_ISSTR ]1
JSR BINSAVE
<<<
*
*``````````````````````````````*
* AMODE : INIT TXTFILE OP MODE *
*- -*
* FOOLS DOS INTO THINKING THAT *
* WE ARE IN INDIRECT MODE TO *
* ALLOW FOR TEXT FILE READ AND *
* WRITE OPERATIONS. *
*- -*
* SAMPLE USAGE: *
* AMODE *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
AMODE MAC
LDA #1
STA $AAB6 ; DOS LANG FLAG
STA $75+1 ; NOT IN DIRECT MODE
STA $33 ; NOT IN DIRECT MODE
<<<
*
*``````````````````````````````*
* CMD : EXECUTE DOS COMMAND *
*- -*
* SIMPLY EXECUTES THE DOS CMD *
* AS IT IS PROVIDED IN THE *
* STRING PASSED AS PARAMETER 1 *
*- -*
* PARAMETERS: *
* *
* ]1 = COMMAND STRING *
*- -*
* SAMPLE USAGE: *
* CMD "CATALOG" *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
CMD MAC
_ISSTR ]1
JSR DOSCMD
<<<
*
*``````````````````````````````*
* FPRN : PRINT LINE TO FILE *
*- -*
* PRINTS THE GIVEN STRING TO *
* THE FILE THAT IS OPEN FOR *
* WRITING. IF MEMORY ADDRESS *
* IS PASSED, THEN PRINT THE *
* STRING THAT IS AT THAT *
* LOCATION. *
*- -*
* PARAMETERS: *
* *
* ]1 = EITHER A STRING OR *
* MEMLOC OF STRING *
*- -*
* SAMPLE USAGE: *
* FPRN "TESTING" *
* FPRN $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FPRN MAC
IF ",]1
JSR FPRINT
ASC ]1
HEX 8D00
ELSE ; IF PARAM IS ADDR
_ISLIT ]1
JSR FPSTR ; PRINT STRING
FIN
<<<
*
*``````````````````````````````*
* FINP : GET LINE FROM TXTFILE *
*- -*
* GETS A LINE OF TEXT FROM THE *
* FILE OPEN FOR READING AND *
* STORES IT AD THE ADDRRESS *
* SPECIFIED IN THE PARAMETERS. *
*- -*
* PARAMETERS: *
* *
* ]1 = ADDRESS OF CDM STR *
*- -*
* SAMPLE USAGE: *
* FINP $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
FINP MAC
_ISLIT ]1
JSR FINPUT
<<<
*
*``````````````````````````````*
* SLOT : CHANGE RWTS IOB SLOT *
*- -*
* CHANGES THE SLOT VALUE IN *
* THE IOB TABLE FOR THE RWTS *
* ROUTINE. JUST USES DOS IOB. *
*- -*
* PARAMETERS: *
* *
* ]1 = SLOT NUMBER *
*- -*
* SAMPLE USAGE: *
* SLOT #6 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
SLOT MAC
*
LDA ]1
STA SCRATCH
ASL SCRATCH
ASL SCRATCH
ASL SCRATCH
ASL SCRATCH ; MUL BY 16
LDA SCRATCH
STA IOB_SLOT
<<<
*
*``````````````````````````````*
* DRIVE : CHANGE RWTSIOB DRIVE *
*- -*
* CHANGES THE DRIVE VALUE IN *
* THE IOB TABLE FOR THE RWTS *
* ROUTINE. JUST USES DOS IOB. *
*- -*
* PARAMETERS: *
* *
* ]1 = DRIVE NUMBER *
*- -*
* SAMPLE USAGE: *
* DRIVE #1 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DRIVE MAC
*
LDA ]1
STA IOB_DRIV
<<<
*
*``````````````````````````````*
* TRACK : CHANGE RWTSIOB TRACK *
*- -*
* CHANGES THE TRACK VALUE IN *
* THE IOB TABLE FOR THE RWTS *
* ROUTINE. JUST USES DOS IOB. *
*- -*
* PARAMETERS: *
* *
* ]1 = TRACK NUMBER *
*- -*
* SAMPLE USAGE: *
* TRACK #5 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
TRACK MAC
*
LDA ]1
STA IOB_TRAK
<<<
*
*``````````````````````````````*
* SECT : CHANGE RWTS SECTOR *
*- -*
* CHANGES THE SECTOR VALUE IN *
* THE IOB TABLE FOR THE RWTS *
* ROUTINE. JUST USES DOS IOB. *
*- -*
* PARAMETERS: *
* *
* ]1 = SECTOR NUMBER *
*- -*
* SAMPLE USAGE: *
* SECT #3 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
SECT MAC
*
LDA ]1
STA IOB_SECT
<<<
*
*``````````````````````````````*
* SETDR : SET RWTS TO READMODE *
*- -*
* CHANGES THE RWTS COMMAND TO *
* READ ($01). *
*- -*
* SAMPLE USAGE: *
* SETDR *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
SETDR MAC
*
LDA $01
STA IOB_COMM
<<<
*
*``````````````````````````````*
* 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: *
* *
* ]1 = BUFFER ADDRESS *
*- -*
* SAMPLE USAGE: *
* DBUFF $300 *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DBUFF MAC
*
LDA #<]1
STA IOB_BUFL
LDA #>]1
STA IOB_BUFH
<<<
*
*``````````````````````````````*
* DRWTS : EXECUTE RWTS ROUTINE *
*- -*
* RUNS THE RWTS ROUTINE AFTER *
* THE APPROPRIATE VARIABLES IN *
* THE IOB TABLE ARE SET. *
*- -*
* SAMPLE USAGE: *
* RWTS *
*,,,,,,,,,,,,,,,,,,,,,,,,,,,,,,*
*
DRWTS MAC
*
JSR DISKOP
<<<