Zum diesjährigen Vintage Computing Festival Berlin hatte ichn außer einer CTM 9016 auch eine PDP-8/e ausgestellt.
Zum diesjährigen Vintage Computing Festival Berlin hatte ichn außer einer CTM 9016 auch eine PDP-8/e ausgestellt.
Diese war früher mal als emebeded PDP-8/e in einem GemSAEC High Speed Centrifugal Analyzer von Electro Nucleonics im Einsatz:
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:
Die Programmierung der PDP-8/e ist wegen des eingeschränkten Befehlssatzes ein eigenes Thema, aber sehr lehrreich zum Verstehen dieser Maschine.
000.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
Alles anzeigen
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)