* DISASSEMBLY BY DYNAMITE OF 1.BOOT.BIN * STANDARD PRE-NAMED LABEL EQUATES CMDADR EQU $C100 * EXTERNAL LABEL EQUATES LE000 EQU $E000 FLOPPY CTLR LE001 EQU $E001 LE002 EQU $E002 LE003 EQU $E003 STACK EQU $C0FF SCTBUF EQU $C300 ORG $C100 START BRA START1 FCB $00,$00 FCB $00 FLXTRK FCB $01 FILE START TRACK FCB $01 FILE START SECTOR FCB $00 TADR FCB $C1,$00 LADR1 FCB $00 FCB $00 SIDEID FCB $00 START1 LDS #STACK SETUP STACK LDD FLXTRK GET TRANSFER ADDRESS 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 LADR1+1 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 JMP [TADR] * * READ SINGLE SECTOR * READ BSR SELTRK TST SIDEID TEST SIDE BNE READ0 LDA #$8C READ A SECTOR SIDE 0 BRA READ1 SIDE 0, JUMP READ0 LDA #$8E READ A SECTOR SIDE 1 READ1 STA LE000 COM REGISTER BSR DELAY CLRB LDX #SCTBUF READN LDA LE000 LOADS STATUS BITA #2 TEST DATA READY ? BNE READ3 YES, JUMP BITA #1 STILL BUSY ? BNE READN NO, NEXT TFR A,B BRA L009D READ3 LDA LE003 GET DATA STA 0,X+ STORE IN SECTOR BUFFER DECB SECTOR FINISHED ? BNE READN NO, NEXT BSR TEST L009D BITB #$1C CRC, SEEK OR LOST DATA ERROR ? RTS TEST LDB LE000 BITB #1 BUSY ? BNE TEST LOOP TO WAIT RTS SELTRK CLR SIDEID CMPB #$0A IS IT SIDE 2 BLS SELTR1 NO, SIDE 1 DEC SIDEID YES, CHANGE SIDE SELTR1 STB LE002 SECREG CMPA LE001 TRKREG BEQ DELAY OK, TRACK IS OK STA LE003 DATREG SET TRACK BSR DELAY LDA #$1B SEEK NEW TRACK CMD L00C1 STA LE000 CMDREG BSR DELAY BSR TEST DELAY JSR DEL1 JSR DEL1 DEL1 RTS ORG $C1F5 FCB $50,$56 END START