; cmslcml.asm ; SLC Machine language assist ; L. Stewart, September 10, 1982 11:07 AM ; added reset interrupts, September 10, 1982 11:07 AM ; removed stat stuff, December 3, 1982 2:21 PM ; 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 ? slrmode DB ? 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 ; reset SLR MOV AL,0 MOV slrmode,AL MOV AL,0FH OUT slrcmd,AL ; reset IO MOV AL,0C8H OUT slrcmd,AL ; disable interrupts ; 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 ; reset SLT MOV AL,0 MOV sltmode,AL MOV AL,0FH OUT sltcmd,AL ; reset MOV AL,0C8H OUT sltcmd,AL ; disable interrupts ; 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 PUBLIC _slrstart PUBLIC _sltstart PUBLIC _slrinit PUBLIC _slcinit PUBLIC _waitccb PUBLIC _slrstat C_CODE ENDS END