A new old bug in the printer ROM?
|
10-25-2023, 05:17 PM
(This post was last modified: 10-25-2023 05:17 PM by ThomasF.)
Post: #19
|
|||
|
|||
RE: A new old bug in the printer ROM?
(10-24-2023 11:27 AM)brouhaha Wrote: That's inspired me to look at my disassembly listings again, and it doesn't seem quite as inscrutable now, I guess that's the benefit of having spent a few more years writing and debugging Nut code. Yes, the code is (no surprice here) a bit similar to the 82143, but still offers some hurdles to cross ... Using the Pico2040 I managed to understand the Wand enough to make an emulation of it that works fine now, by tracing the instructions I came to understand the inner works of the Wand data buffer and how it interfaces the Nut using e.g. FI signaling. I have then started to look at the Blinky, which offers another level of the puzzle - since the HW is unknown. So far I have realized that there are at least 15 (to my knowledge so far at least 16 bits wide) registers that can be read and written to. Some of these are status registers (like register 7). By emulating these register I can now at least start the calculator and start tracing commands (TESTP e.g. still returns "BAD" but at least it executes!). Reading an writing to Blinky is done by "READ (r)" and "WRITE (r)" (at least r=0-14 are used), but there is also 16 other instructions that I so far as not come to grip with. This NPIC instructions used seems to have the following format: rrrr 111 xxs -- rrrr is the register in the Blinky (0-14 - have not seen 15 being used) -- s is the ending PIC instruction (return control to Nut) -- and xx is the instruction, where 00 = write, 01 = read, and 10 is yet unknown for me (11 I have not seen in the code). Like the following sequence where we first write to reg 5 which is then followed by two other instructions: Code: 6F51 264 SELPF 9 Since I don't have a Blinky myself, I am not able to trace the execution to see how the XXX instruction alters the bus (or even if it does), but maybe the NutEM/PC could be a way to try and figure out what these instructions do. Cheers, Thomas [35/45/55/65/67/97/80 21/25/29C 31E/32E/33E|C/34C/38E 41C|CV|CX 71B 10C/11C/12C/15C|CE/16C 32S|SII/42S 28C|S 48GX/49G/50G 35S 41X] |
|||
« Next Oldest | Next Newest »
|
User(s) browsing this thread: 2 Guest(s)