; 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