10 ;›20 ; *** EQUATES ***›30 ;›40 START = $4000›50 SIOV = $E459›60 INITAD = $02E2›70 DDEVIC = $0300 ;START OF DEVICE CONTROL BLOCK (DCB)›80 DUNIT = DDEVIC+1›90 DCOMND = DUNIT+1›0100 DSTATS = DCOMND+1›0110 DBUFLO = DSTATS+1›0120 DBUFHI = DBUFLO+1›0130 DTIMLO = DBUFHI+1›0140 DUNUSE = DTIMLO+1›0150 DBYTLO = DUNUSE+1›0160 DAUX1 = DBYTLO+1›0170 DAUX2 = DAUX1+1›0180 ;›0190 ; *** MAIN PROGRAM ***›0200 ;›0210 *= START›0220 LDA #1 ; CHECK DRIVE #1 FIRST›0230 STA DRVNO›0240 NXTDRV›0250 JSR RDDOT ;READ THE DRIVE OPTION TABLE›0260 LDA DSTATS ;CHECK STATUS OF SIO OPERATION›0270 CMP #$01 ;1=OPERATION SUCCESSFUL›0280 BNE NODRV ;IF NOT SUCCESSFUL, QUIT›0290 LDA #2 ;SET STEP RATE=2, (3 SLOWEST)›0300 STA DOTAB+1›0310 JSR WRTDOT ;SEND DRIVE OPTION TABLE TO DRIVE›0320 INC DRVNO ;NEXT DRIVE›0330 JMP NXTDRV›0340 NODRV›0350 RTS ;EXIT›0360 ;›0370 ; *** SUBS ***›0380 ;›0390 RDDOT ; READ DRIVE OPTION TABLE›0400 LDA DRVNO›0410 STA DUNIT ;SET DRIVE #›0420 LDA #$40 ;SET I/O DIRECTION (INPUT)›0430 STA DSTATS›0440 LDA #$4E ;SET COMMAND TO READ DRIVE OPTION TABLE›0450 STA DCOMND›0460 JSR SIOV ;EXECUTE›0470 RTS ›0480 WRTDOT ; WRITE DRIVE OPTION TABLE›0490 LDA DRVNO›0500 STA DUNIT ;SET DRIVE #›0510 LDA #$80›0520 STA DSTATS ;SET I/O DIRECTION(OUTPUT)›0530 LDA #$4F›0540 STA DCOMND ;SET COMMAND TO WRITE DRIVE OPTION TABLE›0550 JSR SIOV ;EXECUTE›0560 RTS ›0570 ;›0580 ; *** VARIABLES ***›0590 ;›0600 DOTAB›0610 *= *+$0D ;DRIVE OPTION TABLE (12 BYTES)›0620 ;›0630 ; *** INITIALIZE DCB ***›0640 ;›0650 *= DDEVIC ;DEVICE CONTROL BLOCK (SEE MAPPING THE ATARI)›0660 DCB›0670 .BYTE $31,$01,$4E,$40›0680 .WORD DOTAB›0690 .BYTE $01,$00,$0C,$00›0700 .BYTE $01,$00›0710 ;›0720 ; *** SET TO RUN ON LOAD ***›0730 ;›0740 *= INITAD›0750 .WORD START›0760 .END ›+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++