



       NAM FLOAD 
       OPT O,NOG
       ORG $2500
       JMP SRCH
       JMP LOAD FOR LOAD FUNCTION
       JMP VERF FOR VERIFY FUNCTION
SRCH   LDX #SMSG FRO SEARCH MODE
       JSR PRNTCR
       LDA A #$FF FOR SEARCH FUNCTION
       STA A MODEFG SAVE MODE
       BRA LOAD1
LOAD   LDX #LMSG FOR LOAD MODE
       JSR PRNTCR
       CLR MODEFG
       BRA START
VERF   LDX #VMSG FOR VERIFY MODE
       JSR PRNTCR
       LDA A #1 FOR VERIFY
       STA A MODEFG
       CLR ERRFG FOR ERRORS
START  LDX #$FB85 LOAD SINGLE / CONTINOUS MESSAGE
       JSR PRNT PRINT MESSAGE
       JSR KEYBRD GET KEYBOARD CHARACTER
       STA A SFLAG SAVE IT
       CMP A #'S IS IT AN S
       BEQ LOAD1 YES CONTINUE
       CMP A #'C IS IT A C
       BNE START NO PRINT MESSAGE AGAIN
LOAD1  JSR CRLF PRINT CRLF
LOAD4  JSR RECORD GET RECORD FROM TAPE
       LDA A TYPE WHICH TYPE RECORD IS IT?
       CMP A #'0 IS IT A HEADER?
       BNE LOAD2 NO 
       LDA A BYTECT YES A HEADER GET BYTECT
       LDX #BYTECT POINTER TO INPUT BUFFER
LOAD3  INX
       DEC A AT LAST CHARACTER?
       BNE LOAD3 NO
       LDA A #$04 LOAD STOP CODE FOR PRINTER
       STA A 0,X SAVE IT
       LDX #INBUF LOAD FILE NAME
       JSR PRNTCR PRINT NAME
       JSR CKSMOK CKECKSUM OK?
       TST MODEFG WHAT MODE
       BPL LOAD4 IF LOAD OR VERIFY
SRCH1  LDX #SRCHM IN SEARCH MODE
       JSR PRNTCR PRINT MESSAGE
       JSR KEYBRD GET CHARACTER
       CMP A #'C WAS IT A C FOR CONTINUE
       BEQ LOAD4 TRY AGAIN
       CMP A #'L WAS IT A L FOR LOAD
       BEQ LOAD YES WAS LOAD
       CMP A #'V WAS IT A V FOR VERIFY?
       BEQ VERF
       BRA SRCH1 TRY ANOTHER MESSAGE
LOAD2  TST MODEFG WHAT MODE?
       BMI LOAD4 IF SEARCH MODE
       JSR CKSMOK CHECK SUM OK?
       LDA A TYPE GET TYPE RECORD
       CMP A #'1 IS IT DATA?
       BEQ LOAD5 YES
       CMP A #'9 IS IT END OF FILE RECORD?
       BNE LOAD4 NO GET ANOTHER RECORD
       LDA A SFLAG LOAD SINGLE/CONTINOUS FLAG
       CMP A #'C IS IT CONTINOUS
       BEQ LOAD4 YES TRY AGAIN
       JMP EXEC NO EXIT TO EXBUG
LOAD5  LDA A BYTECT GST BYTECOUNT
       SUB A #$03 ACCOUNT FOR ADDRESS AND BYTE COUNT
       STA A BYTECT
       LDX #INBUF GET INPUT POINTER
       STX INPTR SAVE IT
       LDX INBUF-2 GET ADDRESS
LOAD6  STX OUTPTR SAVE OUTPPUT ADDRESS
       LDA A OUTPTR GET ADDRESS
       AND A #$0F GET RID OF HIGH ADDRESS
       ORA A #$30 INTO $3000 RANGE
       STA A OUTPTR SAVE NEW ADDRESS
       LDX INPTR LOAD INPTR
       LDA A 0,X GET WORD
       INX SET UP FOR NEXT ONE
       STX INPTR SAVE NEW ADDRESS
       LDX OUTPTR LOAD ADDRESS TO WRITE
       TST MODEFG IS IT VERIFY OR LOAD
       BEQ LOAD8 FOR LOAD
       CMP A 0,X WAS IT SAME AS MEMORY?
       BEQ CONT YES CONTINUE
       PSH A SAVE BYTE
       STX OUTPTR SAVE OUTPTR
       TST ERRFG ANY ERRORS?
       BNE VERF1 YES DON'T PRINT HEADER
       SEC
       ROL ERRFG SET ERROR FLAG
       LDX #ERRMSG GET ERROR MESSAGE
       JSR PRNTCR PRINT MESSAGE
VERF1  LDX #OUTPTR GETT MEMORY ADDRESS
       JSR CRLF PRINT CRLF
       JSR PWDSP PRINT ADDRESS
       LDX OUTPTR LOAD MEMORY ADDRRESS
       JSR PBTSP PRINT BYTE
       TSX GET WORNG TAPE WORD
       JSR PBTSP PRINT IT
       PUL A RESTORE STACK
       LDX OUTPTR REESTORE OUTPTR
       BRA CONT CONTINUE
LOAD8  STA A 0,X WRITE IT
       CMP A 0,X IS IT SAME?
       BNE ERROR NO ERROR
CONT   INX SET UP FOR NEXT OUTPUT
       DEC BYTECT AM I DONE?
       BNE LOAD6 NO NOT DONE
       JMP LOAD4 GET ANOTHER RRECORD
ERROR  JMP LDERRO PRINT LOAD ERROR MESSAGE
CKSMOK TST CKSM WAS IT OK?
       BEQ CKSM1 YEES OK
       LDX #CKSMM
       JSR PRNTCR PRINT MESSAGE
       LDX #INBUF-2 LOAD ADDRESS THAT STARTED
       JSR PWDSP PRINT WORNG ADDRESS
CKSM1  RTS
CKSMM  FCC /CKSM ERROR /
       FCB 07,04
SMSG   FCC /SEARCH MODE/
       FCB 04
VMSG   FCC /VERIFY MODE  /
       FCB 04
LMSG   FCC /LOAD MODE  /
       FCB 04
MODEFG EQU $FF5A
ERRFG  EQU $FF61
SRCHM  EQU $FB4A
ERRMSG EQU $FB6B
PBTSP  EQU $FA24
PWDSP  EQU $FA22
LDERRO EQU $F89B
PRNT   EQU $FA35
EXEC   EQU $F5DC
PRNTCR EQU $FA33
KEYBRD EQU $FA4E
SFLAG  EQU $FF58
CRLF   EQU $FA41
RECORD EQU $F8A4
TYPE   EQU $FF8C
BYTECT EQU $FF8D
CKSM   EQU $FF8B
INBUF  EQU $FF90
OUTPTR EQU $FF56
INPTR  EQU $FF08
       END
