//BUGBUG: Data break is not excluded on any model. //BUGBUG: Implement PDP-5 slowdown. //BUGBUG: Implement PDP-8/S slowdown. //BUGBUG: Memory maximums for 8/L, etc. are not implemented. //BUGBUG: Special non-existant memory behaviors for straight-8, LINC-8. //BUGBUG: Implement memory protect feature for the 8/L. //BUGBUG: Implement special nop CIF/CDF for the 8/L. //BUGBUG: Debug LINC I/O instructions. //BUGBUG: Distinguish LINC-8 and PDP-12 LINC instruction emulations. //BUGBUG: Implement LINC peripherals. //BUGBUG: Implement PDP-12 API/stack stuff. //BUGBUG: Restrict pre-Omnibus IOT handling for non-TTY devices. //BUGBUG: Implement special 8/A handling for line printer port. //BUGBUG: Implement special 8/A handling for memory over 32K. //BUGBUG: Implement special 8/A handling for PUSH/POP. //BUGBUG: Implement special VT78 handling for panel memory. //BUGBUG: Implement special DECmate handling for panel memory. //BUGBUG: Suppress EAE on PDP-5?, 8/S, 8/L. //BUGBUG: Suppress EAE on 8/A (except CLA, MQA, MQL, SWP). //BUGBUG: Suppress EAE on DECmates (illegal instructions). //BUGBUG: Implement special VT78, DECmate handling for PUSH/POP. //BUGBUG: Implement VT78, DECmate peripherals. //BUGBUG: Implement DECmate color graphics option. //BUGBUG: Implement DECmate Z80 option. //BUGBUG: Implement DECmate 8086 option. // Model Limitations // 5 No IAC rotate, no CMA rotate, no EAE, 4K maximum, slower // PC at 0000, Interrupts at 0001, no DMA (data break) // 8/S No IAC rotate, no CMA rotate, no EAE, 8K maximum, 15x slower // (straight) 8 No IAC rotate, IOT 6004 is special, no SWP, no SCL // Nonexistent memory reference is special // LINC-8 Like straight-8, but with LINC & LINC peripherals, 4K // 8/L group 3 CLA is NOP, no EAE, 8K maximum, protect switch // CDF/CIF to non-existant field is a NOP // RAL RAR and RTL RTR, perform both AND results // 8/I RAL RAR and RTL RTR, perform both AND results // PDP-12 Same as 8/I, but with LINC & LINC peripherals // IOT 6006 is special, DTLA conflicts with PUSHJ // 8/E/F/M CAF, BSW, Omnibus I/O, MQL, MQA, SWP // Odd semantics for RAL RAR, RTL RTR // EAE option has mode B // 8/A CAF, BSW, Omnibus I/O, PUSH/POP, 128K support // Yet different semantics for RAL RAR, no EAE // non-standard LPT // VT78 CAF, BSW, Omnibus I/O, PUSH/POP // RAL RAR and RTL RTR are NOPs // Autoindex suppressed for current page accesses // The IF is only 2 bits long (16K) // The MMU reads only 2 bits of DF during RDF // The MMU maps DF 7 onto panel memory // No restart from HLT, No DMA (data break) // DECmates CAF, BSW, R3L, Omnibus I/O, PUSH/POP // RAL RAR is R3L, RTL RTR is NOP // No EAE, EAE operations hang // Incompatible second serial port (also model dependent) // KSF, TSF, PSF implementation botched // No restart from HLT in DECmate I // Color graphics options // Optional Z80 and 8086 coprocessor // // Most of these differences have to do with the treatment of IOT and OPR // instructions. There is a difference in the treatment of non-existant // memory, and of current page indirection where the current page is page // zero. Quirks that are not fully implemented will be marked in the code // with BUGBUG: or TODO: comments, based on the percieved serverity of the // limitation imposed by their absence. / / Start in the usual place, and make a preliminary determination of the / CPU model. *200 WHAT, TAD 0 TAD (-. SNA CLA TAD 0 TAD (-. SNA CLA JMP PDP5 / If it can IAC RAL, then it's not made out of [RSB] series modules, / Which makes it an 8/L or better. CLA IAC RAL TAD (-2 SNA CLA JMP TTL /TODO / / New enough that it isn't made of resistors and transistors. / Maybe it is an 8/L? TTL, CLA CMA /Get non-zero value CLA 0401 /Try a group 3 CLA SNA CLA /Is this an 8/L? JMP PDP8L /It seems so. /PDP-8/I or better. /TODO / / It seems to be a PDP-5. Let's see if it really is. PDP5, /TODO / / It seems to be a PDP-8/S. Let's see if it really is. PDP8S, /TODO / / It seems to be a straight-8. Let's see if it really is. PDP8, /TODO / / It seems to be a LINC-8. Let's see if it really is. LINC8, /TODO / / It seems to be a PDP-8/L. Let's see if it really is. PDP8L, /TODO / / It seems to be a PDP-8/I. Let's see if it really is. PDP8I, /TODO / / It seems to be a PDP-. Let's see if it really is. PDP812, /TODO / / It seems to be a PDP-8/E/F/M. Let's see if it really is. PDP8E, /TODO / / It seems to be a PDP-8/A. Let's see if it really is. PDP8A, /TODO / / It seems to be a VT78. Let's see if it really is. VT78, /TODO / / It seems to be a DECmate I. Let's see if it really is. DMI, /TODO / / It seems to be a DECmate II. Let's see if it really is. DMII, /TODO / / It seems to be a DECmate III. Let's see if it really is. DMIII, /TODO HLT $