hdorg equ 120q stat equ hdorg cntrol equ hdorg data equ hdorg+3 functn equ hdorg+2 commd equ hdorg+1 result equ hdorg+1 trks equ 200 bdos equ 5h ;BDOS entry acr equ 0dh ;carriage return alf equ 0ah ;line feed drsel equ 0fch ;DR 0, HD 0, STEP OUT drvrdy equ 20h ;Drive Ready bit cntrl equ 0dh ;WENBL, MCLK, FRENBL clrflt equ 5h ;Toggle 3bit to clr wrfault run equ 0fh ;cntrl + RUN bit wrsect equ 7h ;WRITE SECTOR COMMAND rdsect equ 3h ;READ SECTOR COMMAND opdone equ 2h ;OP DONE STATUS BIT dirbit equ 8h stpbit equ 4h ;toggle to step tkzro equ 1h ;Track Zero bit halt equ 80h ;Halt bit nflt equ 10h ;Write Fault tmout equ 8h ;Timeout bit cmplt equ 4h ;Complete bit xrtry equ 2h ;Auxilliary status retry bit djiost equ 0e3f9h ;DJ UART STATUS djdata equ 0e3f8h ;DJ DATA djdr equ 4h ;DJ DATA READY WHEN OFF wboot equ 0h ;RESTART tstpat equ 0aah ;Test pattern 10101010 himem equ 8h ;High Memory Select & Reset ORG 100H lxi d,sgnon call pbuff ;select drive, head & Mclock, out step direction setup mvi a,drsel out 52h mvi a,cntrl ;enable function register out 50h ;toggle write enable to clr write fault mvi a,clrflt out 50h mvi a,cntrl out 50h in 50h ;see if write fault cleared ani nflt jnz ckrdy ;no error lxi d,noclr call pbuff jmp setup ckrdy in 50h ani drvrdy jz ckhalt lxi d,ntrdy call pbuff jmp setup ckhalt in 50h ani halt jnz setrun lxi d,nothlt call pbuff jmp setup setrun mvi a,run out 50h trk00 in stat ani tkzro jz stepin stpout mvi a,drsel xri stpbit out functn xri stpbit out functn call delay call ckint jmp trk00 stepin mvi a,trks mov c,a mvi a,drsel xri dirbit mov b,a out functn stepi mov a,b xri stpbit out functn xri stpbit out functn push b call delay call ckint pop b dcr c jnz stepi jmp trk00 delay lhld dtime xchg delp dcx d mov a,e ora d jnz delp ret ckint lda djiost ani djdr rnz lda djdata jmp wboot pbuff mvi c,9 CALL BDOS RET SGNON DB ACR,ALF DB 'STEPPING 0 TO 200 & BACK$' buferr db acr,alf db 'Buffer error$' noclr db acr,alf db 'Toggle Write Protect did not clear Write Fault$' ntrdy db acr,alf db 'Drive Not Ready$' wrflms db acr,alf db 'Write Fault$' nothlt db acr,alf DB 'NOT HALTED$' DTIME DW 100H