30 REM THIS PROGRAM LOADS PAGE 6 FROM THE FILE D:TEST 100 DIM FILE$(20),CIO$(7):CIO$="hhh*LVd" 106 REM CIO$ IS PLA,PLA,PLA,TAX,JMP $E456 (CIOV) 110 FILE$="D:TEST":REM - *FILE NAME 120 CMD=7:STADR=1536:GOSUB 30000 130 IF ERROR=1 THEN ? "TRANSFER COMPLETE":STOP 135 ? "ERROR # ";ERROR;" OCCURRED AT LINE # ";PEEK(186)+256*PEEK(187) 200 END 300 REM _ CIO SETUP SUBROUTINE 310 REM 30000 REM 30001 REM 30002 REM THIS ROUTINE LOADS OR SAVES MEMORY FILE FROM BASIC 30003 REM BY SETTING UP AN IOCB AND CALLING CIO DIRECTLY 30004 REM 30006 REM ON ENTRY CMD=7 MEANS LOAD MEMORY 30008 REM _CMD=11 MEANS SAVE MEMORY 30009 REM _STADR= THE ADDRESS TO LOAD OR SAVE MEMORY 30010 REM _BYTES= THE NUMBER OF BYTES TO SAVE OR LOAD 30011 REM _IOCB= THE IOCB TO USE 30012 REM _FILE$= DESTINATION FILE NAME 30013 REM _ 30014 REM ON EXIT ERROR=1 MEANS SUCCESSFUL COMMAND 30018 REM _ERROR<>1 THEN ITS AN ERROR STATUS 30019 REM 30020 REM _ *** IOCB EQUATES *** 30022 REM 30024 IOCBX=IOCB*16:ICCOM=834+IOCBX:ICSTA=835+IOCBX 30026 ICBAL=836+IOCBX:ICBAH=837+IOCBX 30028 ICBLL=840+IOCBX:ICBLH=841+IOCBX 30029 REM 30030 AUX1=4:IF CMD=11 THEN AUX1=8 30035 TRAP 30900:OPEN #IOCB,AUX1,0,FILE$ 30040 TEMP=STADR:GOSUB 30500 30090 POKE ICBAL,LOW:POKE ICBAH,HIGH 30100 TEMP=BYTES:GOSUB 30500 30130 POKE ICBLL,LOW:POKE ICBLH,HIGH 30140 POKE ICCOM,CMD:ERROR=USR(ADR(CIO$),IOCBX) 30150 ERROR=PEEK(ICSTA):RETURN 30200 REM 30300 REM _ ***ROUTINE RETURNS HIGH,LOW BYTE OF 16 BIT NUMBER 30400 REM 30500 HIGH=INT(TEMP/256):LOW=INT(TEMP-HIGH*256):RETURN 30550 REM 30600 REM ***TRAP HERE IF ERROR OCCURS DURING ROUTINE**** 30900 ERROR=PEEK(195) 30920 CLOSE #IOCB:RETURN
Back to previous page