Zum diesjährigen Vintage Computing Festival Berlin hatte ichn außer einer CTM 9016 auch eine PDP-8/e ausgestellt.

PDP-8/e auf dem Vintage Computing Festival Berlin 2018
-
-
Diese war früher mal als emebeded PDP-8/e in einem GemSAEC High Speed Centrifugal Analyzer von Electro Nucleonics im Einsatz:
Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. -
Als kleine Demo, was man nur mit einem PDP-8 Prozessor anfangen könnte, hat mich Microprofessor auf die Idee gebracht, das vom Altair 8800 bekannte Spielchen Kill The Bit auf die PDP-8 zu portieren:
Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. Der Inhalt kann nicht angezeigt werden, da du keine Berechtigung hast, diesen Inhalt zu sehen. -
Die Programmierung der PDP-8/e ist wegen des eingeschränkten Befehlssatzes ein eigenes Thema, aber sehr lehrreich zum Verstehen dieser Maschine.
Code
Alles anzeigen000.010.000.000 100.000.000.000 SB starting BITs 000.010.000.001 000.000.000.001 TIME loop start size, the bigger, the faster 000.010.000.010 000.000.000.000 TMPX intermediate temp field for XOR 000.010.000.011 000.000.000.000 INCR intermediate temp field for loop 000.010.000.100 000.000.000.000 BITS intermediate temp field for BITs 000.010.000.101 111.011.000.000 CLA, CLL :init clear all 000.010.000.110 001.010.000.000 TAD SB load starting BITs in AKKU 000.010.000.111 100.010.010.111 JMS SUB :start gosub loop 000.010.001.000 100.010.010.111 JMS SUB gosub loop 000.010.001.001 111.110.000.100 LAS load SR in AKKU 000.010.001.010 011.010.000.010 DCA TMPX store to XOR temp field 000.010.001.011 001.010.000.010 TAD TMPX load TMPX in AKKU again 000.010.001.100 000.010.000.100 AND BITS AKKU and BITS 000.010.001.101 111.000.100.001 CMA IAC complement AKKU and increment by 1 000.010.001.110 111.001.000.100 CLL RAL clear KINK and rotate AKKU to left 000.010.001.111 001.010.000.010 TAD TMPX add TMPX to AKKU 000.010.010.000 001.010.000.100 TAD BITS add BITS to AKKU 000.010.010.001 100.010.010.111 JMS SUB gosub loop 000.010.010.010 100.010.010.111 JMS SUB gosub loop 000.010.010.011 111.000.001.000 RAR rotate AKKU to right 000.010.010.100 111.100.011.000 SZL skip next command on LINK zero 000.010.010.101 001.010.000.000 TAD SB add leftmost bit to akku 000.010.010.110 101.010.000.111 JMP start 000.010.010.111 000.000.000.000 SUB 000.010.011.000 011.010.000.100 DCA BITS store to BITs temp field 000.010.011.001 001.010.000.001 TAD TIME load TIME in AKKU 000.010.011.010 011.010.000.011 DCA INCR store to loop temp field 000.010.011.011 001.010.000.100 TAD BITS load BITs from temp field in AKKU 000.010.011.100 010.010.000.011 ISZ INCR :loop1 INCR++ 000.010.011.101 101.010.011.100 JMP loop1 000.010.011.110 010.010.000.011 ISZ INCR :loop2 INCR++ 000.010.011.111 101.010.011.110 JMP loop2 000.010.100.000 010.010.000.011 ISZ INCR :loop3 INCR++ 000.010.100.001 101.010.100.000 JMP loop3 000.010.100.010 101.110.010.111 JMP I SUB go back via SUB
weitere Todos für die Version 2.0
- weiter optimieren
- Anstelle des Akkus das MQ Register zur Anzeige nutzen (dann wäre der Akku frei für die Verzögerungen)
--> aber dadurch Einbußen der Kompatibilität - den MQ gibts nur bei der PDP-8/e, PDP-8/f und PDP-8/m
- mit der Zeit ändernde Game Levels (z.B. steigende Geschwindigkeit)
- Bewegung des Punktes in beide Richtungen (vielleicht auch abhängig vom Game Level)
- Score am Ende des Spiels (binär oder Anzahl der Lämple)