-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathtodo
115 lines (86 loc) · 5.62 KB
/
todo
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
ac94c8d976f9bcaa213f154e28135bc7b776dffa
5b8b12ac84c4cd32dfb11f1697b8268fbe7e8c95
- ondanks geen EOI gedaan toch trigger
- InvokeInterrupt wordt gedaan zonder offset
- wordt de offset wel goed ingesteld?
47b1cb6a62f3e21460d59d900b659624b7a8f518
- interrupt produced (keyboard reset), unmask, STI -> interrupt is produced but mask is ff thus not triggered
-> i8259::_isr is not set?
http://bitsavers.informatik.uni-stuttgart.de/pdf/ibm/pc/xt/1502237_PC_XT_Technical_Reference_Apr83.pdf
- tests: set all other bits to 1 and then verify they did not change
* loop en/of string (D(irection)!)
* prefixen
- jmp np
- call far ptr
- ret
- jmp far ptr
47298103989ece60dc293257ff4641b11a323d91
- jump1, jump2
88eda0274a11b45399db86fd8bbc9dea9acb2af7
- jump1, jump2, jmpmov
6988dd281f816fedbc3b06dd1af1d1426a42455f
- control.bin, datatrnf.bin
ebf874d1b131595ed93caa5fb30e8d3326670b14
- cmpneg.bin
- strings.bin
0b0b25c7b06567494052708982f6f3348e4419cf
- segpr.bin, bitwise.bin
rm /home/folkert/temp/ramdisk/logfile.txt ; dotnet run -t ru/jmpmov.bin -T 0xf0000 -B -o 0xf000,0x0000 -l /home/folkert/temp/ramdisk/logfile.txt
bochs 'romimage: file=ru/jmpmov.bin'
05/09/86 bios:
- FE289 is the check for a CGA card
if AL = 30h at that point, it's an MDA card. If AL = 10h or 20h it's a CGA card
- 8253, discussion on discord
gloriouscow — Today at 10:09 PM
it's reading the timer in a loop, so as the timer value changes more bits get set with OR
Folkert — Today at 10:10 PM
@gloriouscow but isn't it resetting the counter at C12?
gloriouscow — Today at 10:10 PM
no? where
Folkert — Today at 10:10 PM
oh wait, that's it: that latching means not neccessariyl reloading & restarting the counter, it means retrieving the count.
gloriouscow — Today at 10:11 PM
it means freezing the latch register
why they bother to do that in LSB mode i don't know
its usually only useful for reading in LSBMSB
i dunno how you've implemented your pit, but the way the hardware works is that all reads are through the latch register
every tick the counting element is copied into the latch register
until the latch command is received, then the latch register stops updating, 'freezing' the current value
until it is read out, when it starts updating again
so you really only have to handle the latch command in one place in you code - whether or not you update it on a tick. pretty simple
Folkert — Today at 10:15 PM
yes, I think I misunderstood the "latch" part. I thought that it meant something like: set value & start timer. "lost in translation" so to say.
thanks for the explanation
gloriouscow — Today at 10:15 PM
also the count element is 16 bit, lsb mode doesn't change that
so if you set a reload value of 0 it will tick over to 65535
91d5f6d8d3903bf64d24368358d8248e501ca75c fails at E37C (check if timer goes too slow)
when re-setting timer, clear pending interrupts, but only for the timer that gets reset
9b09458f5ebfee987be906750a02fd2d07e925ed fails at E4DF
ae2d1c35c052e61f3b19d030cf5419f5780db9ad loops on post due to switch setting
f2a6cde41174139bb6eb19416db72cace8407813 PIC OCW3: "active request for corresponding interrupt line" is required
f84604782603839b59f110cf1ebc32292dbe7420 fails at memory check 0x8000, subroutine E4EE (routine label E21A)
since 8c56c4572d25ad7ce933265dda1533c2ee518a2c, memory counting fails at 32kB also scan_code returned after reset is 0x00 (yet bios does not complain?)
[1079823] -Is-apc 0FFA33 B0 AX:EE08 BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA33 | MOV AL,$C8
[1079824] OUT: I/O port 0061 (C8)
[1079825] -Is-apc 0FFA35 E6 AX:EEC8 BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA35 | OUT $61,AL
[1079826] Scanning for interrupts
[1079827] keyboard::GetPendingInterrupts
[1079828] Keyboard has 1 pending interrupts
[1079829] Keyboard triggers vector 9, mask: FF
[1079830] Keyboard interrupt 9 masked off
[1079831] -Is-apc 0FFA37 B0 AX:EEC8 BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA37 | MOV AL,$48
[1079832] OUT: I/O port 0061 (48)
[1079833] -Is-apc 0FFA39 E6 AX:EE48 BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA39 | OUT $61,AL
[1079834] -Is-apc 0FFA3B B0 AX:EE48 BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA3B | MOV AL,$FD
[1079835] OUT: I/O port 0021 (FD)
[1079836] 8259 OUT port 33 value FD
[1079837] -Is-apc 0FFA3D E6 AX:EEFD BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA3D | OUT $21,AL
[1079838] Scanning for interrupts
[1079839] keyboard::GetPendingInterrupts
[1079840] -Is-apc 0FFA3F C6 AX:EEFD BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA3F | MOV byte [$046B] (:$00046B -> 0000),$00
[1079841] -Is-apc 0FFA44 FB AX:EEFD BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA44 | STI
[1079842] word True, r1 0, r2 0, result 0, issub True
[1079843] -Is-apc 0FFA45 2B AX:EEFD BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0297, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA45 | SUB CX,CX
[1079844] -I-z-p- 0FFA47 F6 AX:EEFD BX:0000 CX:0000 DX:C800 SP:00FE BP:0000 SI:FFFF DI:0050 flags:0246, ES:B000, CS:F000, SS:0030, DS:0000 IP:FA47 | TEST [$046B] (:$00046B -> 0000),02
---> interrupt fires too soon - mask is removed from pic but interrupt-flag of cpu is still off - and then the interrupt is lost