about interrupts:
Interrupts are controlled by 0b4h register, that sets up which interrupts are enabled.
write:
bit0 - enable Dave defined interrupts (50Hz/1Khz/frequency of tone generator 0 or 1)
bit1 - resets Dave interrupt request flag (if interrupt occurs, interrupt flag is becomes active, it has to reset "manually")
bit2 - enable 1Hz interrupt
bit3 - resets 1Hz interrupt request flag (if interrupt occurs, interrupt flag is becomes active, it has to reset "manually")
bit4 - enable Nick interrupt (video interrupt)
bit5 - resets Nick interrupt request flag (if interrupt occurs, interrupt flag is becomes active, it has to reset "manually")
bit6 - enable INT2 - it is not used, i think it was for future implementation
bit7 - resets INT2 - it is not used, i think it was for future implementation
read:
bit0 - Dave defined interrupts flip/flop(50Hz/1Khz/frequency of tone generator 0 or 1)
bit1 - gives back Dave interrupt status flag (if interrupt occured 1, if not 0 it remains active until it is not reseted by writing bit1 to port 0b4h, and iterrepupt generating until reset)
bit2 - interrupt flip/flop
bit3 - gives back 1Hz interrupt status flag (if interrupt occured 1, if not 0 it remains active until it is not reseted by writing bit3 to port 0b4h, and iterrepupt generating until reset)
bit4 - it contains the value of VINT flag of avtual LPB
bit5 - gives back Nick interrupt status flag (if interrupt occured 1, if not 0, it remains active until it is not reseted by writing bit5 to port 0b4h, and iterrepupt generating until reset)
bit6 - INT2 - it is not used, i think it was for future implementation
bit7 - gives back INT2 - it is not used, i think it was for future implementation
bit0 and bit2 flip/flop are changes when "interrupt time is reached" ex for 1 Hz interrupt it changes in each sec from 0 to 1 and from 1 to 0.
bit1 changes to 1 (interrupt occurs) , if bit0 is changed, and remains in 1 until it is not cleared by setting bit1 of 0b4h port
bit3 changes to 1 (interrupt occurs) , if bit2 is changed, and remains in 1 until it is not cleared by setting bit1 of 0b4h port
bit4 contains the VINT (video interrupt) flag of actually read LPB
bit5 changes to one if LPT pointer starts to read next LPB after LPB which contained VINT flag
This means that if we want to place more working interrupts into LPT, after each LPB contains VINT need to insert an LPB without VINT to activate that place for interrupt.
Standard EXOS LPT with 1 video interrupts, Int occurs when Nick starts to read content of line BAD0
>B900 F7 08 0B 73 B8 FE E9 01 00 36 00 49 FF 24 2D 36
>B910 F7 08 0B 73 C5 E0 E9 01 00 92 00 49 FF 24 2D 36
>B920 F7 08 0B 73 5D E4 E9 01 00 92 00 49 FF 24 2D 36
>B930 F7 08 0B 73 35 E4 E9 01 00 92 00 49 FF 24 2D 36
>B940 F7 08 0B 73 0D E4 E9 01 00 92 00 49 FF 24 2D 36
>B950 F7 08 0B 73 E5 E3 E9 01 00 92 00 49 FF 24 2D 36
>B960 F7 08 0B 73 ED E0 E9 01 00 92 00 49 FF 24 2D 36
>B970 F7 08 0B 73 15 E1 E9 01 00 92 00 49 FF 24 2D 36
>B980 F7 08 0B 73 3D E1 E9 01 00 92 00 49 FF 24 2D 36
>B990 F7 08 0B 73 65 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9A0 F7 08 0B 73 8D E1 E9 01 00 92 00 49 FF 24 2D 36
>B9B0 F7 08 0B 73 B5 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9C0 F7 08 0B 73 DD E1 E9 01 00 92 00 49 FF 24 2D 36
>B9D0 F7 08 0B 73 05 E2 E9 01 00 92 00 49 FF 24 2D 36
>B9E0 F7 08 0B 73 2D E2 E9 01 00 92 00 49 FF 24 2D 36
>B9F0 F7 08 0B 73 55 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA00 F7 08 0B 73 7D E2 E9 01 00 92 00 49 FF 24 2D 36
>BA10 F7 08 0B 73 A5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA20 F7 08 0B 73 CD E2 E9 01 00 92 00 49 FF 24 2D 36
>BA30 F7 08 0B 73 F5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA40 F7 08 0B 73 1D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA50 F7 08 0B 73 45 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA60 F7 08 0B 73 6D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA70 F7 08 0B 73 95 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA80 F7 08 0B 73 BD E3 E9 01 00 92 00 49 FF 24 2D 36
>BA90 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAA0 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAB0 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAC0 F2 92 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 --- vint
>BAD0 FD 10 3F 00 00 00 00 00 00 00 00 00 00 00 00 00
>BAE0 FE 10 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BAF0 FC 10 3F 1C 00 00 00 00 00 00 00 00 00 00 00 00
>BB00 F0 12 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BB10 EB 13 3F 00 00 00 00 00 00 00 00 00 00 00 00 00
Modified EXOS LPT with 3 interrupts, Int occur when Nick starts to read BA90, and BAB0, and BAD0
>B910 F7 08 0B 73 C5 E0 E9 01 00 92 00 49 FF 24 2D 36
>B900 F7 08 0B 73 B8 FE E9 01 00 36 00 49 FF 24 2D 36
>B920 F7 08 0B 73 5D E4 E9 01 00 92 00 49 FF 24 2D 36
>B930 F7 08 0B 73 35 E4 E9 01 00 92 00 49 FF 24 2D 36
>B940 F7 08 0B 73 0D E4 E9 01 00 92 00 49 FF 24 2D 36
>B950 F7 08 0B 73 E5 E3 E9 01 00 92 00 49 FF 24 2D 36
>B960 F7 08 0B 73 ED E0 E9 01 00 92 00 49 FF 24 2D 36
>B970 F7 08 0B 73 15 E1 E9 01 00 92 00 49 FF 24 2D 36
>B980 F7 08 0B 73 3D E1 E9 01 00 92 00 49 FF 24 2D 36
>B990 F7 08 0B 73 65 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9A0 F7 08 0B 73 8D E1 E9 01 00 92 00 49 FF 24 2D 36
>B9B0 F7 08 0B 73 B5 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9C0 F7 08 0B 73 DD E1 E9 01 00 92 00 49 FF 24 2D 36
>B9D0 F7 08 0B 73 05 E2 E9 01 00 92 00 49 FF 24 2D 36
>B9E0 F7 08 0B 73 2D E2 E9 01 00 92 00 49 FF 24 2D 36
>B9F0 F7 08 0B 73 55 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA00 F7 08 0B 73 7D E2 E9 01 00 92 00 49 FF 24 2D 36
>BA10 F7 08 0B 73 A5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA20 F7 08 0B 73 CD E2 E9 01 00 92 00 49 FF 24 2D 36
>BA30 F7 08 0B 73 F5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA40 F7 08 0B 73 1D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA50 F7 08 0B 73 45 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA60 F7 08 0B 73 6D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA70 F7 08 0B 73 95 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA80 F7 88 0B 73 BD E3 E9 01 00 92 00 49 FF 24 2D 36 --- vint
>BA90 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAA0 F7 88 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36 --- vint
>BAB0 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAC0 F2 92 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 --- vint
>BAD0 FD 10 3F 00 00 00 00 00 00 00 00 00 00 00 00 00
>BAE0 FE 10 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BAF0 FC 10 3F 1C 00 00 00 00 00 00 00 00 00 00 00 00
>BB00 F0 12 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BB10 EB 13 3F 00 00 00 00 00 00 00 00 00 00 00 00 00
Modified EXOS LPT, it contains VINT in 3 lines, but only 1 interrupt will occur when Nick starts to read content of BAD0
>B900 F7 08 0B 73 B8 FE E9 01 00 36 00 49 FF 24 2D 36
>B910 F7 08 0B 73 C5 E0 E9 01 00 92 00 49 FF 24 2D 36
>B920 F7 08 0B 73 5D E4 E9 01 00 92 00 49 FF 24 2D 36
>B930 F7 08 0B 73 35 E4 E9 01 00 92 00 49 FF 24 2D 36
>B940 F7 08 0B 73 0D E4 E9 01 00 92 00 49 FF 24 2D 36
>B950 F7 08 0B 73 E5 E3 E9 01 00 92 00 49 FF 24 2D 36
>B960 F7 08 0B 73 ED E0 E9 01 00 92 00 49 FF 24 2D 36
>B970 F7 08 0B 73 15 E1 E9 01 00 92 00 49 FF 24 2D 36
>B980 F7 08 0B 73 3D E1 E9 01 00 92 00 49 FF 24 2D 36
>B990 F7 08 0B 73 65 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9A0 F7 08 0B 73 8D E1 E9 01 00 92 00 49 FF 24 2D 36
>B9B0 F7 08 0B 73 B5 E1 E9 01 00 92 00 49 FF 24 2D 36
>B9C0 F7 08 0B 73 DD E1 E9 01 00 92 00 49 FF 24 2D 36
>B9D0 F7 08 0B 73 05 E2 E9 01 00 92 00 49 FF 24 2D 36
>B9E0 F7 08 0B 73 2D E2 E9 01 00 92 00 49 FF 24 2D 36
>B9F0 F7 08 0B 73 55 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA00 F7 08 0B 73 7D E2 E9 01 00 92 00 49 FF 24 2D 36
>BA10 F7 08 0B 73 A5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA20 F7 08 0B 73 CD E2 E9 01 00 92 00 49 FF 24 2D 36
>BA30 F7 08 0B 73 F5 E2 E9 01 00 92 00 49 FF 24 2D 36
>BA40 F7 08 0B 73 1D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA50 F7 08 0B 73 45 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA60 F7 08 0B 73 6D E3 E9 01 00 92 00 49 FF 24 2D 36
>BA70 F7 08 0B 73 95 E3 E9 01 00 92 00 49 FF 24 2D 36
>BA80 F7 08 0B 73 BD E3 E9 01 00 92 00 49 FF 24 2D 36
>BA90 F7 08 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36
>BAA0 F7 88 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36 --- vint
>BAB0 F7 88 3F 74 B8 FE E9 01 00 92 00 49 FF 24 2D 36 --- vint
>BAC0 F2 92 3F 00 00 00 00 00 00 00 00 00 00 00 00 00 --- vint
>BAD0 FD 10 3F 00 00 00 00 00 00 00 00 00 00 00 00 00
>BAE0 FE 10 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BAF0 FC 10 3F 1C 00 00 00 00 00 00 00 00 00 00 00 00
>BB00 F0 12 06 3F 00 00 00 00 00 00 00 00 00 00 00 00
>BB10 EB 13 3F 00 00 00 00 00 00 00 00 00 00 00 00 00