NEW AUTO 3,1 *-------------------------------------- EXEC.ERR.FILE.BUSY JMP ERR.FILE.BUSY EXEC.ERR.MISMATCH JMP TYPERR *-------------------------------- EXEC JSR GET.REFNUM.OF.OPEN.FILE BCS .1 ...NOT CURRENTLY OPEN *---File is in use--------------- BIT EXEC.FILE.CLOSING.FLAG BPL EXEC.ERR.FILE.BUSY *---Restarting same EXEC file---- STA MISC.PARMS+1 REFNUM LDA #0 "REWIND" THE FILE STA MISC.PARMS+2 STA MISC.PARMS+3 STA MISC.PARMS+4 JSR MLI.CE SET MARK BCS CLOSE.EXEC.SAVING.ERROR BCC .2 ...ALWAYS, RESTART *-------------------------------- .1 JSR CLOSE.EXEC.FILE STOP ANY EXEC IN PROGRESS BCS .3 ...ERROR *---Check file type-------------- LDA GET.SET.PARMS+4 FILE TYPE MUST BE TXT CMP #$04 TXT FILETYPE CODE BNE EXEC.ERR.MISMATCH *---Open the file---------------- LDA #0 STA LEVEL LEVEL STA MISC.PARMS+2 BUFFER ADDRESS LDA EXEC.BUFFER.BASE STA MISC.PARMS+3 BUFFER ADDRESS HI STA OPEN.PARMS+4 " JSR MLI.C8 OPEN BCS .3 ...ERROR LDA OPEN.PARMS+5 REFNUM OF FILE STA EXEC.REFNUM *---Fill other param blocks------ .2 LDX GET.SET.PARMS+5 RECORD LENGTH STX VAL.L LDX GET.SET.PARMS+6 STX VAL.L+1 LDX #2 POINT AT EXEC FILE NAME JSR SAVE.FILENAME.IN.TABLE *---Switch EXEC on now----------- LDA #$FF MARK EXEC ACTIVE STA F.EXEC LDA KSWL STA VDOSIO+2 LDA KSWH STA VDOSIO+3 LDA #READ.EXEC.FILE STA KSWL LDA /READ.EXEC.FILE STA KSWH CLC .3 RTS *-------------------------------- CLOSE.EXEC.SAVING.ERROR PHA SAVE ERROR CODE JSR CLOSE.EXEC.FILE CLOSE THE FILE PLA GET ERROR CODE SEC SIGNAL ERROR RTS *-------------------------------- * CLOSE EXEC FILE *-------------------------------- CLOSE.EXEC.FILE CLC LDA F.EXEC BPL .1 ...NO EXEC IN PROGRESS LDA VDOSIO+2 RESTORE INPUT HOOK STA KSWL LDA VDOSIO+3 STA KSWH LDA #$FF STA EXEC.FILE.CLOSING.FLAG LDX #2 LDA EXEC.REFNUM JSR CLOSE.ONE.FILE CLOSE THE FILE .1 RTS *-------------------------------- * "EXEC" INPUT HOOK *-------------------------------- READ.EXEC.FILE STA (BASL),Y STOP BLINKING ON SCREEN JSR SAVE.REGS SAVE A,X,Y *---Check for CTRL-C Abort------- LDA KEYBOARD CMP #$83 CONTROL-C? BNE .2 ...NO JSR CLOSE.EXEC.FILE ...YES STA STROBE *---End of Data------------------ .1 JSR RESTORE.REGS JMP ABORT.EXIT *---Set up EXEC char input------- .2 LDA EXEC.REFNUM REFNUM STA READ.WRITE.PARMS+1 LDA #EXEC.INPUT.CHAR STA READ.WRITE.PARMS+2 LDA /EXEC.INPUT.CHAR STA READ.WRITE.PARMS+3 LDA #1 READ JUST ONE BYTE STA READ.WRITE.PARMS+4 LDA #0 STA READ.WRITE.PARMS+5 JSR MLI.CA READ BCS .3 ...ERROR OR END OF DATA JSR RESTORE.REGS LDA EXEC.INPUT.CHAR ORA #$80 RTS *-------------------------------- .3 JSR CLOSE.EXEC.SAVING.ERROR CLOSE EXEC FILE CMP #$05 END OF DATA? BEQ .1 ...YES JMP ERROR.HANDLER *-------------------------------------- MAN SAVE usr/src/scmasm.30/sci.s.exec LOAD usr/src/scmasm.30/scmasm.s ASM