NAM BOOT.TXT * VEGAS 6809 BOOTSTRAP * EQUATES STACK EQU $C07F SCTBUF EQU $C300 LECSEC EQU $F812 LECTURE SECTEUR DU MONITEUR * * START OF UTILITY * ORG $C100 BOOT BRA LOAD0 FCB $00,$00,$00 TRK FCB $00 FILE START TRACK FCB $00 FILE START SECTOR FCB $00 DENSITY FLAG TADR FDB $C100 TRANSFER ADDRESS LADR FDB $0000 LOAD ADDRESS LOAD0 LDS #STACK SETUP STACK LDD >TRK SETUP STARTING TRK & SCT STD >SCTBUF LDY #SCTBUF+256 * * PERFORM ACTUAL BOOT LOAD * LOAD1 BSR GETCH GET A CHARACTER CMPA #$02 DATA RECORD HEADER? BEQ LOAD2 SKIP, IF SO CMPA #$16 XFR ADDRESS HEADER? BNE LOAD1 LOOP IF NEITHER BSR GETCH GET TRANSFER ADDRESS STA >TADR BSR GETCH STA >TADR+1 BRA LOAD1 CONTINUE LOAD LOAD2 BSR GETCH GET LOAD ADDRESS STA >LADR BSR GETCH STA >LADR+1 BSR GETCH GET BYTE COUNT TFR A,B PUT IN B TSTA BEQ LOAD1 LOOP IF COUNT = 0 LDX >LADR GET LOAD ADDRESS LOAD3 PSHS X,B BSR GETCH GET A DATA CHARACTER PULS X,B STA ,X+ PUT CHARACTER DECB END OF DATA IN RECORD? BNE LOAD3 LOOP IF NOT BRA LOAD1 GET ANOTHER RECORD * * GET CHARACTER ROUTINE * GETCH CMPY #SCTBUF+256 OUT OF DATA? BNE GETCH4 GO READ CHARACTER IF NOT LDX #SCTBUF POINT TO BUFFER LDD ,X GET FORWARD LINK BEQ GO IF ZERO, FILE IS LOADED BSR READ READ NEXT SECTOR BNE BOOT START OVER IF ERROR LDY #SCTBUF+4 POINT PAST LINK GETCH4 LDA ,Y+ ELSE GET A CHARACTER RTS * * FILE IS LOADED, JUMP TO IT * GO JMP [TADR] * * READ SINGLE SECTOR * READ JMP >LECSEC RTS END BOOT