* DISASSEMBLY BY DYNAMITE OF 1.BOOT1.BIN * EXTERNAL LABEL EQUATES * ASSUMES DP = $E0 (PAGE OF DISK CONTROLLER) L0000 EQU $0000 CMDREG L0001 EQU $0001 TRKREG L0002 EQU $0002 SECREG L0003 EQU $0003 DATREG SCTBUF EQU $C300 STACK EQU $C0FF ORG $C100 START JMP LOAD0 FDB $200D FLXTRK FCB $0E FILE START TRACK FCB $04 FILE START SECTOR FCB $00 DENSITY FLAG TADR FDB $C100 TRANSFER ADDRESS LADR1 FCB $00 LOAD ADDRESS LADR2 FCB $00 SIDEID FCB $00 LOAD0 LDS #STACK SETUP STACK LDA #$E0 TFR A,DP SET DP $E0 LDD FLXTRK GET TRANSF ADRESS FROM DISK CMPA #0 TEST IF TRANSFER ADD ABSENT LBEQ ERROR STD SCTBUF SETUP STARTING TRK & SCT LDY #SCTBUF+256 * * PERFORM ACTUAL BOOT LOAD * LOAD1 BSR GETCH GET A CHARACTER CMPA #2 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 LADR1 BSR GETCH STA LADR2 BSR GETCH GET BYTE COUNT TFR A,B PUT IN B TSTA BEQ LOAD1 LOOP IF COUNT = 0 LDX LADR1 GET LOAD ADDRESS LOAD3 PSHS B,X BSR GETCH GET A DATA CHARACTER PULS B,X STA 0,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 0,X GET FORWARD LINK BEQ GO IF ZERO, FILE IS LOADED BSR READ READ NEXT SECTOR BNE START START OVER IF ERROR LDY #SCTBUF+4 POINT PAST LINK GETCH4 LDA 0,Y+ ELSE GET A CHARACTER RTS * * FILE IS LOADED, JUMP TO IT * GO CLRA TFR A,DP JMP [TADR] * * READ SINGLE SECTOR * READ BSR SELTRK LDB #2 LDA #$8C READ A SECTOR SIDE 1 TST SIDEID TEST SIDE BEQ READ1 SIDE 1, JUMP LDA #$8E READ A SECTOR SIDE 2 READ1 STA