* * * * * * OPEN: filename-ptr buffer-option --> * type file# 1 (open successful) * 0 (open not successful) * DB 0C4H file-name-ptr buffer-option OPEN ASC 'OPE' DB 'N'+80H DW PSTOR-5 OPEN DW $+2 POP H POP D PUSH B CALL SYS DB OPEOP JMP OPEN1 LXI H,1 MVI D,0 MOV E,B PUSH D Push type MOV E,A XRA A STA DSKERR POP B JMP DPUSH OPEN1 STA DSKERR LXI H,0 POP B JMP HPUSH * DB 0C5H ASC 'CLOS' DB 'E'+80H DW OPEN-7 CLOSE $+2 POP H MOV A,L PUSH B CALL SYS DB CLOOP JMP CLOS1 XRA A CLOS1 STA DSKERR POP B JMP NEXT * DB 0C5H ASC 'FINF' DB 'O'+80H DW CLOSE-8 FINFO DW $+2 POP H POP D PUSH B CALL SYS DB INFOP JMP FINF1 XRA A FINF1 STA DSKERR POP B JMP NEXT * DB 0C4H ASC 'KIL' DB 'L'+80H DW FINFO-8 KILL DW $+2 POP D PUSH B CALL SYS DB KILOP JMP KILL1 XRA A KILL1 STA DSKERR POP B JMP NEXT * DB 0C6H ASC 'RANDO' DB 'M'+80H DW KILL-7 RANDM DW $+2 POP H MOV A,L PUSH B CALL SYS DB RNDOP JMP RNDM1 XRA A RNDM1 STA DSKERR POP B JMP NEXT * * * READ: addr #bytes file# READ ---> * * DB 0C4H ASC 'REA' DB 'D'+80H DW RANDM-9 READ DW $+2 LXI H,0 Save the system pointer DAD B POP B Get the file# MOV A,C POP B Get the byte count POP D PUSH H (actually a PUSH B) CALL SYS DB RDLOP JMP READ1 XRA A READ1 STA DSKERR POP B JMP NEXT * * * WRITE: addr #bytes file# WRITE ---> * DB 0C5H ASC 'WRIT' DB 'E'+80H DW READ-7 WRITE DW $+2 LXI H,0 DAD B POP B MOV A,C POP B POP D PUSH H CALL SYS DB WBLOP JMP WRIT1 XRA A WRIT1 STA DSKERR POP B JMP NEXT * * SEEK: byte#/blk# pos-option file# SEEK * * DB 0C4H ASC 'SEE' DB 'K'+80H DW WRITE-8 SEEK DW $+2 LXI H,0 DAD B XCHG . BC now in DE POP B MOV A,C POP B MOV B,C POP H PUSH D CALL SYS DB SEKOP JMP SEEK1 XRA A SEEK1 STA DSKERR POP B JMP NEXT * * SPACE: dist-move type-movement file # ---> * * DB 0C5H ASC 'SPAC' DB 'E'+80H DW SEEK-7 SPACE DW $+2 LXI H,0 DAD B BC now in HL POP B MOV A,C POP D POP B PUSH H CALL SYS DB SPAOP JMP SPC1 XRA A SPC1 STA DSKERR POP B JMP NEXT *