home *** CD-ROM | disk | FTP | other *** search
-
- ;
- ; TO RUN THE ONE SECOND INTERRUPT A LINK IS NEEDED
- ; ON THE SYSTEM SUPPORT BOARD.
- ; BACKGROUND:-
- ; WHEN THE FOLLOWING STATES ARE PRESENTED TO THE
- ; 'OKI CLOCK CHIP',
- ; HOLD='0'
- ; READ='1'
- ; CS='1'
- ; A0-A3='1'
- ; THEN D0 = 1024HZ (50% DUTY)
- ; D1 = 1HZ 122.1 USEC
- ; D2 = 1/60 HZ "
- ; D3 = 1/3600 HZ "
- ;
- ; THE 1 SEC PULSE IS CONNECTED TO J7 PIN 7.
- ; FOR AN INTERRUPT 1.
-
-
- ************************************************
- * *
- * ROUTINE FOR INITIALISING MASTER AND SLAVE *
- * 8259A'S ON THE SYSTEM SUPPORT 1 *
- * *
- ************************************************
-
-
- ; THIS PROGRAM IS SET TO I/O ADDRESS BASE 50H
- ; (COMPUPRO STANDARD), FOR DIFFERENT ADDRESSES
- ; CHANGE "BASE" IN EQUATES.
-
-
- MACLIB MACRO
-
- INTJMP EQU 200H ;START OF INTERRUPT JUMPS
- SINTJMP EQU INTJMP+20H
-
-
- BASE EQU 50H ;STARTING ADDR OF BOARD
- MPRT0 EQU BASE ;LOWER MASTER PORT A0=0
- MPRT1 EQU BASE+1 ;UPPER MASTER PORT (A0=1)
- SPRT0 EQU BASE+2 ;LOWER SLAVE PORT (A0=0)
- SPRT1 EQU BASE+3 ;UPPER SLAVE PORT (A0=1)
- CLKCMD EQU BASE+10 ;CLOCK COMMAND PORT
- CLKDAT EQU BASE+11 ;CLOCK DATA PORT
- SURTD EQU BASE+12 ;SS UART DATA PORT
- SURTS EQU BASE+13 ;SS UART STATUS PORT
- SURTM EQU BASE+14 ;UART MODE PORT
- SURTC EQU BASE+15 ;UART COMMAND PORT
-
- CLKDATA EQU BASE+11 ;CLOCK DATA PORT
-
-
-
- ORG 100H
-
- ; THIS ROUTINE INITIALISES THE MASTER 8259A
-
- INIT:
- DI ;DISABLE INTERRUPTS
- MVI A,(INTJMP AND 0E0H) OR 00011101B ;ICW1
- OUT MPRT0 ;SEND IT
- MVI A,HIGH INTJMP ;UPPER BYTE OF ADDR INTERVAL
- OUT MPRT1 ;SEND IT
- MVI A,10000000B ;IR7 HAS A SLAVE
- OUT MPRT1 ;SEND IT
- MVI A,00010000B ;ICW4
- OUT MPRT1 ;SEND IT
- MVI A,0FFH ;CLEAR ALL MASK BITS (OCW1)
- OUT MPRT1 ;SEND IT
- MVI A,10100000B ;ROTATE ON NON-SPEC EOI
- OUT MPRT0 ;SEND IT
- MVI A,00001000B ;OCW3
- OUT MPRT0 ;SEND IT
-
-
- ; THIS ROUTINE INITIALISES THE SLAVE 8259A
-
-
- MVI A,(SINTJMP AND 0E0H) OR 00011101B ;ICW1
- OUT SPRT0 ;SEND IT
- MVI A,HIGH SINTJMP ;UPPER BYTE OF ADDR INTERVAL
- OUT SPRT1 ;SEND IT
- MVI A,07H ;IR7 HAS A SLAVE
- OUT SPRT1 ;SEND IT
- MVI A,00010000B ;ICW4
- OUT SPRT1 ;SEND IT
- MVI A,0FFH ;CLEAR ALL MASK BITS (OCW1)
- OUT SPRT1 ;SEND IT
- MVI A,10100000B ;ROTATE ON NON-SPEC EOI
- OUT SPRT0 ;SEND IT
- MVI A,00001000B ;OCW3
- OUT SPRT0 ;SEND IT
-
-
- ; SET UP OKI RTC FOR 1 SEC INTERRUPT
- ; SET A0 - A3 = 1 (ADDRESS 15)
- ; SET READ = 1
- ; SET WRITE = 0
- ; SET HOLD = 0
- ; BY OUTPUTING 1FH TO CLKCMD PORT
-
-
- MVI A,1FH ;SET FOR TIME INTERRUPTS
- OUT CLKCMD ;AND OUTPUT
-
- ; ENABLE INT15 ONLY
-
- MVI A,07DH ;ENABLE INT15 ONLY
- OUT MPRT1
- MVI A,07FH
- OUT SPRT1
- EI ;ENABLE
- LOOP JMP LOOP ;LOOP FOREVER
-
-
- ************************************************
- * STANDARD CONFIGURATION OF INTERRUPTS *
- * ON THE SYSTEM SUPPORT 1 BOARD *
- * *
- ************************************************
-
-
- ; MASTER CONTROLLER :-
- ; INTERRUPT NO. SOURCE OPTION
- ; IRQ0 VI0 RINT
- ; IRQ1 VI1 TINT
- ; IRQ2 VI2 TIMER0
- ; IRQ3 VI3 TIMER1
- ; IRQ4 VI4 TIMER2
- ; IRQ5 VI5 SVRQ(9511)
- ; IRQ6 VI6 END(9511)
- ; IRQ7 VI7 INT(SLAVE)
-
-
- ; SLAVE CONTROLLER
- ; INTERRUPT STANDARD SOURCE OPTION
- ; IRQ0 VI7
- ; IRQ1 TIMER0
- ; IRQ2 TIMER1
- ; IRQ3 TIMER2
- ; IRQ4 SVRQ(9511)
- ; IRQ5 END(9511)
- ; IRQ6 TINT
- ; IRQ7 RINT
-
- ;FOR THE INTERFACER 2 BOARD THE STANDARD INTERRUPTS
- ;
-
- ; VI0 INT J0 (PARALLEL CH 0)
- ; VI1 INT J2 (PARALLEL CH 1)
- ; VI2 INT J3 (PARALLEL (CH 2)
- ; VI3 N.C.
- ; VI4 TMRI (TIMER INTERRUPT)
- ; VI5 N.C.
- ; VI6 TXINT
- ; VI7 RXINT
-
-
- ; DISK 1 INTERRUPT OPTIONS
- ; THE INTERRUPT ON THE DISK CONTROLLER
- ; CAN BE STRAPPED TO VI0 TO VI7
- ; NORMALLY VI0 (THE HIGHEST PRIORITY
- ; WOULD BE USED.
-
-
- ORG INTJMP
-
- ************************************************
- * *
- * INTERRUPT JUMP BLOCK *
- * *
- ************************************************
-
- INT0 JMP INT0
- NOP
-
- ; 1 SEC INTERRUPT FROM RTC
-
- INT1 DI ;DISABLE INTERRUPTS
- JMP ONESEC ;EXEC ONE SECOND INTERRUPT
- INT2 JMP INT2
- NOP
- INT3 JMP INT3
- NOP
- INT4 JMP INT4
- NOP
- INT5 JMP INT5
- NOP
- INT6 JMP INT6
- NOP
- INT7 JMP INT7
- NOP
- INT8 JMP INT8
- NOP
-
-
- ; TIMER 0 INTERRUPT
-
- INT9 JMP INT9
- NOP
-
- ; TIMER 1 INTERRUPT
-
- INT10 JMP INT10
- NOP
-
- ; TIMER 2 INTERRUPT
-
- INT11 JMP INT11
- NOP
-
- ; APU (9511) SVRQ INTERRUPT
-
- INT12 JMP INT12
- NOP
-
- ; APU (9511) END INTERRUPT
-
- INT13 JMP INT13
- NOP
-
- ; SYSTEM SUPPORT TINT INTERRUPT
-
- INT14:
- DI
- JMP STINT ;UART TX INTERRUPT
-
- ; SYSTEM SUPPORT RINT INTERRUPT
-
- INT15:
- DI
- JMP SRINT
-
-
- ; ONESEC INTERRUPT ROUTINE
-
- ONESEC:
- SAVE ;SAVE B,D,AND H
- PUSH PSW ;AND PSW
- PRINT <'ONE SECOND INTERRUPT ',CR,LF>
- MVI A,61H ;SET SEOI
- OUT MPRT0 ;AND SEND
- POP PSW ;RESTORE PSW
- RESTORE ;RESTORE B,D,AND H
- EI ;ENABLE INTERRUPTS
- RET
-
-
-
- ************************************************
- * *
- * SYSTEM SUPPORT 1 UART I/P *
- * INTERRUPT ROUTINE *
- * *
- ************************************************
-
- ; THIS ROUTINE CHECKS THE UART FOR DATA
- ; READY, PRINT AN ERROR MESSAGE IF NOT
- ; AVAILABLE. THEN TESTS TO SEE IF THE BUFFER
- ; IS FULL, AGAIN OUTPUTS AN ERROR MESSAGE IF
- ; FULL, AND THEN BUMPS THE COUNT,AND POINTER
- ; BEFORE SENDING THE SEOI'S AND RESTORING THE
- ; REGISTERS, ENABLING INTERRUPTS.
-
- SSDAV EQU 00000001B ;SYSTEM SUPPORT DATA AVAIL
-
- SRINT:
- SAVE ;PUSH B,D,H
- PUSH PSW ;AND PSW
- IN SURTS ;GET STATUS FROM UART
- ANI SSDAV ;MASK DATA AVAIL.
- JZ RINTE ;EXIT IF NOT READY
- IN SURTD ;GET THE DATA
- ANI 7FH ;MASK PARITY
- MOV C,A ;SAVE CHAR
- LDA SIBUFC ;GET COUNT IN BUFFER
- CPI SIBUFL ;AND SEE IF FULL
- JZ SIFUL ;BRIF FULL
- LHLD SIBUFP ;GET POINTER
- MOV M,C ;AND STORE
- INX H ;AND INDEX
- SHLD SIBUFP ;AND SAVE
- INR A ;THEN INDEX NO OF CHAR
- STA SIBUFC ;AND SAVE
- SRINTEX:
-
- ; SEND SPECIFIC END OF INTERRUPT TO
- ; BOTH MASTER AND SLAVE CONTROLLERS.
-
- MVI A,67H ;LOAD SEOI FOR MASTER
- OUT MPRT0 ;SEND IT
- MVI A,67H ;LOAD SEOI FOR SLAVE
- OUT SPRT0 ;AND SEND IT
-
-
- POP PSW ;RESTORE ALL REGISTERS
- RESTORE
- EI ;ENABLE INTERRUPTS
- RET
-
- RINTE:
- PRINT <'SS UART INPUT ERROR',CR,LF>
- CALL SERROR ;RESET USART ERRORS
- JMP SRINTEX ;AND EXIT
-
- SIFUL:
- PRINT <'SS UART INPUT BUFFER FULL',CR,LF>
- JMP SRINTEX ;AND EXIT
-
-
- ;
- ; THIS ROUTINE PERFORMS THE INITIALISATION
- ; REQUIRED BY THE SYSTEM SUPPORT USART.
- ;
- STINIT:
- MVI A,11101110B ;ASYNC,8BITS,EV,2STOP
- OUT SURTM ;SET UP MODE REG. 1
- MVI A,01111110B ;9600 BAUD
- OUT SURTM ;SET UP MODE REG. 2
- MVI A,00100111B ;TX ON,DTR LOW,REC ON,
- ;NO BREAK,NO RESET,RTS LOW
- OUT SURTC ;SET UP COMMAND PORT
- RET
-
-
-
- ; SERROR - ROUTINE TO RESET ERROR FLAGS
- ; ON THE SYSTEM SOPPORT UART.
- ;
-
- SERROR:
- MVI A,00010000B ;RESET UART
- OUT SURTC ;TO COMMAND REG.
- MVI A,00100111B ;RESUME
- OUT SURTC
- RET
-
-
-
- ************************************************
- * *
- * SYSTEM SUPPORT 1 UART O/P *
- * INTERRUPT ROUTINE *
- * *
- ************************************************
-
-
- STINT:
- SAVE ;PUSH B,D,H
- PUSH PSW
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
-
- SIBUFC DB 0H ;SS UART CHAR COUNT
- SIBUFP DW $+2 ;SS UART BUFFER POINTER
- SIBUF DS 125 ;SI BUFFER
- SIBUFL EQU $-SIBUF ;LENGTH OF SIBUFFER
-
-
-
- END
-