; slcml.asm ; SLC Machine language assist ; L. Stewart, August 24, 1982 1:07 PM ; L. Stewart, February 20, 1983 5:23 PM, init mode bytes ; L. Stewart, February 26, 1983 3:43 PM, interrupts off on reset ; interrupt data slrcmd EQU 020H slrccbhi EQU 021H slrccblo EQU 022H sltcmd EQU 024H sltccbhi EQU 025H sltccblo EQU 026H stoffset EQU 004H ctoffset EQU 003H adoffset EQU 001H cmoffset EQU 000H C←CODE SEGMENT C←DATA SEGMENT eneta DB ? ←lccb DB 5 DUP(?) sltmode DB 000H slrmode DB 000H C←DATA ENDS ASSUME CS:C←CODE, DS:C←DATA ; start slt, address of ccb in BX ←SLTStart PROC NEAR XOR AL,AL MOV [stoffset+BX],AL MOV AL,BL OUT sltccblo,AL MOV AL,BH OUT sltccbhi,AL MOV AL,0CH OUT sltcmd,AL RET ←SLTStart ENDP ; start slr, address of ccb in BX ←SLRStart PROC NEAR XOR AL,AL MOV [stoffset+BX],AL MOV AL,BL OUT slrccblo,AL MOV AL,BH OUT slrccbhi,AL MOV AL,0CH OUT slrcmd,AL RET ←SLRStart ENDP ; initialize SLR ←SLRInit PROC NEAR MOV slrmode,0 ; reset SLR MOV AL,0FH OUT slrcmd,AL ; interrupts off MOV AL,008H OUT slrcmd,AL ; set modes and address MOV BX,OFFSET ←lccb MOV BYTE PTR [cmoffset+BX],0E0H MOV WORD PTR [adoffset+BX],OFFSET slrmode MOV BYTE PTR [ctoffset+BX],0FFH CALL ←SLRStart CALL ←WaitCCB MOV BYTE PTR [cmoffset+BX],0C0H MOV WORD PTR [adoffset+BX],OFFSET eneta MOV BYTE PTR [ctoffset+BX],0FFH CALL ←SLRStart CALL ←WaitCCB RET ←SLRInit ENDP ; initialize SLT ←SLTInit PROC NEAR MOV sltmode,0 ; reset SLT MOV AL,00FH OUT sltcmd,AL ; interrupts off MOV AL,008H OUT sltcmd,AL ; set modes and address MOV BX,OFFSET ←lccb MOV BYTE PTR [cmoffset+BX],0E0H MOV WORD PTR [adoffset+BX],OFFSET sltmode MOV BYTE PTR [ctoffset+BX],001H CALL ←SLTStart CALL ←WaitCCB RET ←SLTInit ENDP ; initialize SLC. address in BL ←SLCInit PROC NEAR ; save address MOV eneta,BL CALL ←SLRInit CALL ←SLTInit RET ←SLCInit ENDP ; wait for completion of ccb in BX ←WaitCCB PROC NEAR wsl: MOV AL,[stoffset+BX] AND AL,080H JZ wsl RET ←WaitCCB ENDP ; return SLR status in BL ←SLRStat PROC NEAR XOR AH,AH IN AL,slrcmd MOV BX,AX RET ←SLRStat ENDP ; return SLT status in BL ←SLTStat PROC NEAR XOR AH,AH IN AL,sltcmd MOV BX,AX RET ←SLTStat ENDP PUBLIC ←SLRStart PUBLIC ←SLTStart PUBLIC ←SLCInit PUBLIC ←SLRInit PUBLIC ←SLTInit PUBLIC ←WaitCCB PUBLIC ←SLRStat PUBLIC ←SLTStat C←CODE ENDS END