• Please review our updated Terms and Rules here

What Programs can I Run on the pdp 8/e?

NicolasF

Experienced Member
Joined
Jun 28, 2006
Messages
255
Location
Argentina
Hi,

Is it possible to run BASIC, FOCAL or FORTRAN on the pdp 8 whitout having the machine to boot OS8?
I would like to test something else before atempting to boot OS8.

Thanks!
 
I can't find the 4K BASIC or the 8K, anyone know if they are avaliable to download somewhere?
 
POLY BASIC is available in the DECUS library over at http://so-much-stuff.com/pdp8/software/decus.php.

Unfortunately, it requires disk or tape storage to work.

I tried it under sims just - but it seems to fail when I attempt to RUN a program... so not much use...

There is a pretty good archive of stuff over at http://www.gc-net.jp/omiokone/cpldp8/. Ignore the Japanese language and download the ZIP file... The Japanese for BASIC and FORTRAN etc. is BASIC and FORTRAN...

Dave
 
You can run my Enigma machine M4 simulator without an OS

ASM:

Code:
/ ENIGMA M4 IMPLEMENTATION ON PDP-8
/
/ CONFIGURATION IS ALWAYS DONE THROUGH PDP-8 CONTROL PANEL
/   USE EXAMINE/DEPOSIT TO VERIFY/CHANGE ENIGMA MACHINE CONFIG
/   SEE *0020 BELOW FOR MAP OF OPTIONS
/
/ OPERATION (THERE ARE TWO MODES):
/
/   MINICOMPUTER MODE 
/     SET PROGRAM COUNTER TO 0600
/     ENTER LETTER TO ENCIPHER IN SWITCH REGISTER
/     PRESS START OR CONT TO RUN
/     RESULT WILL BE DISPLAYED IN THE ACCUMULATOR
/
/   TELETYPE MODE
/     SET PROGRAM COUNTER TO 0200
/     PRESS START OR CONT TO RUN
/     TYPE CHARACTERS ON TELETYPE AND IT WILL TYPE RESULT
/     ONLY UPPERCASE A-Z WILL BE ACCEPTED
/
/ ALL NUMBERS ARE IN OCTAL UNLESS SPECIFIED OTHERWISE
/ (DECIMAL NUMBERS WILL HAVE A D AFTER THEM LIKE 8D)
/
/ LETTER TO VALUE TABLE:
/   A-01   H-10   O-17   V-26
/   B-02   I-11   P-20   W-27
/   C-03   J-12   Q-21   X-30
/   D-04   K-13   R-22   Y-31
/   E-05   L-14   S-23   Z-32
/   F-06   M-15   T-24
/   G-07   N-16   U-25

/
/
/_PAGES_0,1,2________________________________________________________


/AUTOINCREMENTING POINTER

*0010
PTR1,   0


/ENIGMA M4 MACHINE CONFIGURATION

*0020
INDC1,  01                      /ADDRESS 0020 : 01-32 (1D-26D)
INDC2,  01                      /ADDRESS 0021 : 01-32 (1D-26D)
INDC3,  01                      /ADDRESS 0022 : 01-32 (1D-26D)
INDC4,  01                      /ADDRESS 0023 : 01-32 (1D-26D)

ROTR1,  1                       /ADDRESS 0024 : 1=BETA, 2=GAMMA
ROTR2,  01                      /ADDRESS 0025 : 01-10 (1D-8D)
ROTR3,  02                      /ADDRESS 0026 : 01-10 (1D-8D)
ROTR4,  03                      /ADDRESS 0027 : 01-10 (1D-8D)

RING1,  01                      /ADDRESS 0030 : 01-32 (1D-26D)
RING2,  01                      /ADDRESS 0031 : 01-32 (1D-26D)
RING3,  01                      /ADDRESS 0032 : 01-32 (1D-26D)
RING4,  01                      /ADDRESS 0033 : 01-32 (1D-26D)

REFL,   1                       /ADDRESS 0034 : 1=REFL B, 2=REFL C

MODE,   2                       /ADDRESS 0035 : 1=MINICOMP, 2=TELETYPE

PLUG1,  00;00                   /ADDRESS 0036 : 00 OFF, 01-32 (1D-26D)
PLUG2,  00;00                   /ADDRESS 0040 : 00 OFF, 01-32 (1D-26D)
PLUG3,  00;00                   /ADDRESS 0042 : 00 OFF, 01-32 (1D-26D)
PLUG4,  00;00                   /ADDRESS 0044 : 00 OFF, 01-32 (1D-26D)
PLUG5,  00;00                   /ADDRESS 0046 : 00 OFF, 01-32 (1D-26D)
PLUG6,  00;00                   /ADDRESS 0050 : 00 OFF, 01-32 (1D-26D)
PLUG7,  00;00                   /ADDRESS 0052 : 00 OFF, 01-32 (1D-26D)
PLUG8,  00;00                   /ADDRESS 0054 : 00 OFF, 01-32 (1D-26D)
PLUG9,  00;00                   /ADDRESS 0056 : 00 OFF, 01-32 (1D-26D)
PLUG10, 00;00                   /ADDRESS 0060 : 00 OFF, 01-32 (1D-26D)
PLUG11, 00;00                   /ADDRESS 0062 : 00 OFF, 01-32 (1D-26D)
PLUG12, 00;00                   /ADDRESS 0064 : 00 OFF, 01-32 (1D-26D)
PLUG13, 00;00                   /ADDRESS 0066 : 00 OFF, 01-32 (1D-26D)


/PAGE 0 VARIABLES AND CONSTANTS

CHAR,   0                       /HOLDS THE CHARACTER 
CINDC,  0                       /ROTOR PARAMETER
CROTR,  0                       /ROTOR PARAMETER
CRING,  0                       /ROTOR PARAMETER
C0032,  0032                    /26D


/ROTOR DATA (DO NOT MOVE)

*0107
/"EKMFLGDQVZNTOWYHXUSPAIBRCJ"; ROTOR_1M      MILITARY 1
SROTR1, 05;13;15;06;14;07;04;21;26;32;16;24;17;
        27;31;10;4030;25;23;20;01;11;02;22;03;12;

/"AJDKSIRUXBLHWTMCQGZNPYFVOE"; ROTOR_2M      MILITARY 2
SROTR2, 01;12;04;13;4023;11;22;25;30;02;14;10;27;
        24;15;03;21;07;32;16;20;31;06;26;17;05;

/"BDFHJLCPRTXVZNYEIWGAKMUSQO"; ROTOR_3M      MILITARY 3
SROTR3, 02;04;06;10;12;14;03;20;22;24;30;26;32;
        16;31;05;11;27;07;01;13;4015;25;23;21;17;

/"ESOVPZJAYQUIRHXLNFTGKDCMWB"; ROTOR_4M      MILITARY 4
SROTR4, 05;23;17;26;20;32;12;01;31;4021;25;11;22;
        10;30;14;16;06;24;07;13;04;03;15;27;02;

/"VZBRGITYUPSDNHLXAWMJQOFECK"; ROTOR_5M      MILITARY 5
SROTR5, 26;32;02;22;07;11;24;31;25;20;23;04;16;
        10;14;30;01;27;15;12;21;17;06;05;03;4013;

/"JPGVOUMFYQBENHZRDKASXLICTW"; ROTOR_6M      MILITARY 6
SROTR6, 12;20;07;26;17;25;15;06;31;21;02;05;4016;
        10;32;22;04;13;01;23;30;14;11;03;24;4027;

/"NZJHGRCXMYSWBOUFAIVLPEKQDT"; ROTOR_7M      MILITARY 7
SROTR7, 16;32;12;10;07;22;03;30;15;31;23;27;4002;
        17;25;06;01;11;26;14;20;05;13;21;04;4024;

/"FKQHTLXOCBJSPDZRAMEWNIUYGV"; ROTOR_8M      MILITARY 8
SROTR8, 06;13;21;10;24;14;30;17;03;02;12;23;4020;
        04;32;22;01;15;05;27;16;11;25;31;07;4026;

/"LEYJVCNIXWPBQMDRTAKZGFUHOS"; ROTOR_BETA    MILITARY M4 BETA
SROTB, 14;05;31;12;26;03;16;11;30;27;20;02;21;
       15;04;22;24;01;13;32;07;06;25;10;17;23;

/"FSOKANUERHMBTIYCWLQPZXVGJD"; ROTOR_GAMMA   MILITARY M4 GAMMA
SROTG, 06;23;17;13;01;16;25;05;22;10;15;02;24;
       11;31;03;27;14;21;20;32;30;26;07;12;04;

/"ENKQAUYWJICOPBLMDXZVFTHRGS", ROTOR_REFL4B  MILITARY M4 B REFLECTOR
SREFLB, 05;16;13;21;01;25;31;27;12;11;03;17;20;
        02;14;15;04;30;32;26;06;24;10;22;07;23;

/"RDOBJNTKVEHMLFCWZAXGYIPSUQ"; ROTOR_REFL4C  MILITARY M4 C REFLECTOR
SREFLC, 22;04;17;02;12;16;24;13;26;05;10;15;14;
        06;03;27;32;01;30;07;31;11;20;23;25;21;

*0577
STOP,   HLT                     /FOR MINICOMP MODE THIS HALTS LEAVING
                                /USER AT ENTRY POINT 0600
/
/
/_PAGE_3_____________________________________________________________

*0600
ENTRY,  CLA CLL                 /GET MODE
        TAD MODE
        TAD C7777               /SUBTRACT 1
        SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
        JMP MINI                /JMP TO MINICOMP MODE

TELE,   KSF                     /SKIP IF READER FLAG SET
        JMP .-1                 /WAIT FOR KEY
        KRB                     /KBD->ACC, CLEAR FLAG
        DCA CHAR                /STORE CHAR SO WE CAN TEST IT
        TAD CHAR                /ALLOW ONLY A-Z (65-90)
        TAD C7677               /SUBTRACT 65
        SPA CLA                 /SKIP ON PLUS OR ZERO, CLEAR ACC
        JMP TELE                /LESS THAN 65, SKIP
        TAD CHAR                /RESTORE CHAR
        TAD C7645               /SUBTRACT 91
        SMA CLA                 /SKIP ON MINUS, CLEAR ACC
        JMP TELE                /MORE THAN 90, SKIP
        CLA CLL                 /IT IS VALID A-Z, RESTORE CHAR
        TAD CHAR
        TAD C7700               /SUBTRACT 64 SO A=1 (1 BIASED)
        JMS CIPHER              /CALL CIPHER
        TAD C0100               /ADD 64 SO a=65 (65 BIASED)
        TSF                     /SKIP IF PRINT FLAG SET
        JMP .-1                 /LOOP UNTIL READY
        TLS                     /PRINT
        JMP TELE                /WAIT FOR NEXT KEY

MINI,   LAS                     /LOAD AC WITH SWITCH REGISTER
        JMS CIPHER              /CALL CIPHER
        JMP I PSTOP             /JMP TO STOP FOR HALT


CIPHER, 0                       /SUBROUTINE RETURN ADDRESS STORE HERE
        DCA CHAR                /STORE ACC IN CHAR

PST,    JMS I PSTEP             /CALL STEP TO STEP THE ROTORS

PL1,    JMS I PSPLUG            /CALL PLUGBOARD TO SWAP THE LETTERS

F4,     TAD INDC4               /SETUP AND CALL FORWARD ROTOR FOR 4
        DCA CINDC
        TAD ROTR4
        DCA CROTR
        TAD RING4
        DCA CRING
        JMS I PFROTOR

F3,     TAD INDC3               /SETUP AND CALL FORWARD ROTOR FOR 3
        DCA CINDC
        TAD ROTR3
        DCA CROTR
        TAD RING3
        DCA CRING
        JMS I PFROTOR

F2,     TAD INDC2               /SETUP AND CALL FORWARD ROTOR FOR 2
        DCA CINDC
        TAD ROTR2
        DCA CROTR
        TAD RING2
        DCA CRING
        JMS I PFROTOR

F1,     TAD INDC1               /SETUP AND CALL FORWARD ROTOR FOR 1
        DCA CINDC
        TAD ROTR1
        TAD C0010               /BETA/GAMMA ACTUALLY AT 9 AND 10 (+8)
        DCA CROTR
        TAD RING1
        DCA CRING
        JMS I PFROTOR

FREFL,  CLA CLL IAC             /LOAD ACC WITH 1
        DCA CINDC
        TAD REFL
        TAD C0012               /REFLECTOR ACTUALLY AT 11 AND 12 (+10)
        DCA CROTR
        CLA CLL IAC             /LOAD ACC WITH 1
        DCA CRING
        JMS I PFROTOR           /CALL REFLECTOR

R1,     TAD INDC1               /SETUP AND CALL REVERSE ROTOR FOR 1
        DCA CINDC
        TAD ROTR1
        TAD C0010               /BETA/GAMMA ACTUALLY AT 9 AND 10 (+8)
        DCA CROTR
        TAD RING1
        DCA CRING
        JMS I PRROTOR

R2,     TAD INDC2              /SETUP AND CALL REVERSE ROTOR FOR 2
        DCA CINDC
        TAD ROTR2
        DCA CROTR
        TAD RING2
        DCA CRING
        JMS I PRROTOR

R3,     TAD INDC3               /SETUP AND CALL REVERSE ROTOR FOR 3
        DCA CINDC
        TAD ROTR3
        DCA CROTR
        TAD RING3
        DCA CRING
        JMS I PRROTOR

R4,     TAD INDC4               /SETUP AND CALL REVERSE ROTOR FOR 4
        DCA CINDC
        TAD ROTR4
        DCA CROTR
        TAD RING4
        DCA CRING
        JMS I PRROTOR

PL2,    JMS I PSPLUG            /CALL PLUGBOARD TO SWAP THE LETTERS

STR1,   CLA CLL                 /LOAD CHAR INTO ACC TO RETURN
        TAD CHAR
        JMP I CIPHER            /RETURN FROM SUBROUTINE


/THIS PAGE VARIABLES AND CONSTANTS

C0010,  0010                    /8D
C0012,  0012                    /10D
C0100,  0100                    /64D
C7700,  7700                    /-64D
C7645,  7645                    /-91D
C7677,  7677                    /-65D
C7777,  7777                    /-1D
PSTOP,  STOP
PSTEP,  STEP
PSPLUG, SPLUG
PFROTOR,FROTOR
PRROTOR,RROTOR

/
/
/_PAGE_4_____________________________________________________________

*1000
SPLUG,  0                       /SUBROUTINE RETURN ADDRESS STORED HERE
        CLA CLL
        TAD PPLUG1              /RESET PLUGBOARD POINTER PTR1
        DCA PTR1
        TAD COUNT               /SETUP COUNT AND INDEX FOR LOOP
        CIA                     /NEGATE (INDEX COUNTS UP TO 0)
        DCA INDEX1

LOOP,   TAD I PTR1              /CHECK PLUGBOARD PAIR FIRST VALUE
        SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
        JMP DSBL                /THIS PLUGBOARD PAIR IS DISABLED
        CIA                     /NOT DISABLED, CONTINUE COMPARING TO OUR CHAR
        TAD CHAR                /ADD CHARACTER, IF IT MATCHES ACC WILL BE 0
        SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
        JMP MATCH1              /MATCH FIRST VALUE IN PAIR
        CLA CLL                 /NOT ZERO, NO MATCH, CLEAR ACC
        TAD I PTR1              /GET SECOND PAIR VALUE
        CIA                     /COMPARE IT TO OUR CHARACTER
        TAD CHAR       
        SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
        JMP MATCH2              /IT IS ZERO, MATCH SECOND VALUE IN PAIR

LOOP2,  CLA CLL                 /NO MATCH THIS PAIR
        ISZ INDEX1
        JMP LOOP
        JMP I SPLUG             /RETURN FROM SUBROUTINE

DSBL,   TAD I PTR1              /THIS PAIR IS DISABLED, SKIP OTHER HALF
        JMP LOOP2

MATCH1, TAD I PTR1              /FIRST WORD MATCHES, OBTAIN OTHER HALF
        DCA CHAR
        JMP I SPLUG             /RETURN FROM SUBROUTINE

MATCH2, CLA CLL CMA RAL         /SECOND WORD MATCHES, ACC=7776 (-2)
        TAD PTR1                /ADD PTR1 TO ACC
        DCA PTR1                /DEPOSIT PTR1-2 TO GET FIRST VALUE
        JMP MATCH1


STEP,   0                       /SUBROUTINE RETURN ADDRESS STORED HERE
        CLA CLL                 /IS ROTOR3 IN NOTCH?
        TAD ROTR3
        JMS I PRPTR             /SET ROTOR POINTER TO CORRECT ROTOR
        TAD INDC3
        DCA TEMP1
        TAD I TEMP1
        AND C4000               /KEEP ONLY NOTCH BIT
        SZA                     /SKIP ON ZERO
        JMP STEP3               /YES - 3 RIGHT ROTORS MOVE
        TAD ROTR4               /IS ROTOR4 IN NOTCH? 
        JMS I PRPTR             /SET ROTOR POINTER TO CORRECT ROTOR
        TAD INDC4
        DCA TEMP1
        TAD I TEMP1
        AND C4000               /KEEP ONLY NOTCH BIT
        SZA                     /SKIP ON ZERO
        JMP STEP2               /YES - 2 RIGHT ROTORS MOVE
        JMP STEP1               /NO - 1 RIGHT ROTOR MOVES

STEP3,  CLA CLL                 /STEP ROTOR 2
        TAD INDC2
        IAC
        JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
        DCA INDC2
                                /INTENTIONAL LACK OF JMP STEPS REMAINING

STEP2,  CLA CLL                 /STEP ROTOR 3
        TAD INDC3
        IAC
        JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
        DCA INDC3
                                /INTENTIONAL LACK OF JMP STEPS REMAINING

STEP1,  CLA CLL                 /STEP ROTOR 4
        TAD INDC4
        IAC
        JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
        DCA INDC4
                                /INTENTIONAL LACK OF JMP STEPS REMAINING

STEP0,  JMP I STEP              /RETURN FROM SUBROUTINE


/THIS PAGE VARIABLES AND CONSTANTS

C4000,  4000                    /NOTCH BIT IN ROTORS
COUNT,  15                      /13D
INDEX1, 0                       /0D
PPLUG1, PLUG1-1                 /POINTER TO WORD BEFORE PLUGBOARD
TEMP1,  0
PRPTR,  RPTR
PRBACK, RBACK

/
/
/_PAGE_5_____________________________________________________________

*1200
FROTOR, 0
        TAD CRING               /CINDC+26-CRING+CHAR
        CIA
        TAD CINDC
        TAD C0032
        TAD CHAR
        JMS RBACK
        DCA TEMP2
        TAD CROTR
        JMS RPTR                /SET ROTOR POINTER TO CORRECT ROTOR
        TAD TEMP2
        DCA TEMP2
        TAD I TEMP2
        AND C0077
        CIA
        TAD CINDC
        CIA
        TAD CRING
        TAD C0032
        JMS RBACK
        DCA CHAR
        JMP I FROTOR            /RETURN FROM SUBROUTINE


RROTOR, 0
        DCA TEMP3               /STORE 0
        TAD C0032
        CIA                     /NEGATE (INDEX COUNTS UP TO 0)
        DCA INDEX2

LOOP3,  ISZ TEMP3
        TAD CRING               /CINDC+26-CRING+CHAR
        CIA
        TAD CINDC
        TAD C0032
        TAD TEMP3
        JMS RBACK
        DCA TEMP2
        TAD CROTR
        JMS RPTR                /SET ROTOR POINTER TO CORRECT ROTOR
        TAD TEMP2
        DCA TEMP2
        TAD I TEMP2
        AND C0077
        CIA
        TAD CINDC
        CIA
        TAD CRING
        TAD C0032
        JMS RBACK
        CIA                     /COMPARE BY NEGATING
        TAD CHAR                /ADD CHARACTER, IF IT MATCHES ACC WILL BE 0
        SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
        JMP MATCH3              /MATCH FIRST VALUE IN PAIR
        ISZ INDEX2
        CLA CLL
        JMP LOOP3

MATCH3, TAD TEMP3
        DCA CHAR
        JMP I RROTOR            /RETURN FROM SUBROUTINE


RPTR,   0                       /CALCULATE ROTOR POINTER 
        CIA
        DCA TEMP4

PTRLP,  TAD C0032
        ISZ TEMP4
        JMP PTRLP
        TAD C0054
        JMP I RPTR              /RETURN FROM SUBROUTINE


RBACK,  0                       /IF ACC>32, SUBTRACT 32 UNTIL IT IS

RBACK2, DCA TEMP4
        TAD TEMP4
        TAD C7746
        SMA SZA
        JMP RBACK2
        CLA CLL
        TAD TEMP4
        JMP I RBACK             /RETURN FROM SUBROUTINE


/THIS PAGE VARIABLES AND CONSTANTS

C0054,  0054                    /CONSTANT TO GENERATE ROTOR PTR
C0077,  0077                    /63D
C7746,  7746                    /-26D
TEMP4,  0
INDEX2, 0
TEMP2,  0
TEMP3,  0

$ENTRY
 
Great program, but I have no idea how to compile it. Do you have some tutorial? (I'm a dec pdp newbie here...)
 
I am pretty sure there is more than 1 native compiler that can do it, but I used a PDP-8 emulator that was written by Brian J. Shelburne that emulates a PDP-8 and can also assemble.

I'll post the assembled list here in case this is helpful:

Code:
            / ENIGMA M4 IMPLEMENTATION ON PDP-8
            /
            / CONFIGURATION IS ALWAYS DONE THROUGH PDP-8 CONTROL PANEL
            /   USE EXAMINE/DEPOSIT TO VERIFY/CHANGE ENIGMA MACHINE CONFIG
            /   SEE *0020 BELOW FOR MAP OF OPTIONS
            /
            / OPERATION (THERE ARE TWO MODES):
            /
            /   MINICOMPUTER MODE 
            /     SET PROGRAM COUNTER TO 0600
            /     ENTER LETTER TO ENCIPHER IN SWITCH REGISTER
            /     PRESS START OR CONT TO RUN
            /     RESULT WILL BE DISPLAYED IN THE ACCUMULATOR
            /
            /   TELETYPE MODE
            /     SET PROGRAM COUNTER TO 0200
            /     PRESS START OR CONT TO RUN
            /     TYPE CHARACTERS ON TELETYPE AND IT WILL TYPE RESULT
            /     ONLY UPPERCASE A-Z WILL BE ACCEPTED
            /
            / ALL NUMBERS ARE IN OCTAL UNLESS SPECIFIED OTHERWISE
            / (DECIMAL NUMBERS WILL HAVE A D AFTER THEM LIKE 8D)
            /
            / LETTER TO VALUE TABLE:
            /   A-01   H-10   O-17   V-26
            /   B-02   I-11   P-20   W-27
            /   C-03   J-12   Q-21   X-30
            /   D-04   K-13   R-22   Y-31
            /   E-05   L-14   S-23   Z-32
            /   F-06   M-15   T-24
            /   G-07   N-16   U-25
            /
            /
            /_PAGES_0,1,2________________________________________________________
            /AUTOINCREMENTING POINTER
            *0010
0010/0000   PTR1,   0
            /ENIGMA M4 MACHINE CONFIGURATION
            *0020
0020/0001   INDC1,  01                      /ADDRESS 0020 : 01-32 (1D-26D)
0021/0001   INDC2,  01                      /ADDRESS 0021 : 01-32 (1D-26D)
0022/0001   INDC3,  01                      /ADDRESS 0022 : 01-32 (1D-26D)
0023/0001   INDC4,  01                      /ADDRESS 0023 : 01-32 (1D-26D)
0024/0001   ROTR1,  1                       /ADDRESS 0024 : 1=BETA, 2=GAMMA
0025/0001   ROTR2,  01                      /ADDRESS 0025 : 01-10 (1D-8D)
0026/0002   ROTR3,  02                      /ADDRESS 0026 : 01-10 (1D-8D)
0027/0003   ROTR4,  03                      /ADDRESS 0027 : 01-10 (1D-8D)
0030/0001   RING1,  01                      /ADDRESS 0030 : 01-32 (1D-26D)
0031/0001   RING2,  01                      /ADDRESS 0031 : 01-32 (1D-26D)
0032/0001   RING3,  01                      /ADDRESS 0032 : 01-32 (1D-26D)
0033/0001   RING4,  01                      /ADDRESS 0033 : 01-32 (1D-26D)
0034/0001   REFL,   1                       /ADDRESS 0034 : 1=REFL B, 2=REFL C
0035/0002   MODE,   2                       /ADDRESS 0035 : 1=MINICOMP, 2=TELETYPE
0036/0000   PLUG1,  00;00                   /ADDRESS 0036 : 00 OFF, 01-32 (1D-26D)
0037/0000
0040/0000   PLUG2,  00;00                   /ADDRESS 0040 : 00 OFF, 01-32 (1D-26D)
0041/0000
0042/0000   PLUG3,  00;00                   /ADDRESS 0042 : 00 OFF, 01-32 (1D-26D)
0043/0000
0044/0000   PLUG4,  00;00                   /ADDRESS 0044 : 00 OFF, 01-32 (1D-26D)
0045/0000
0046/0000   PLUG5,  00;00                   /ADDRESS 0046 : 00 OFF, 01-32 (1D-26D)
0047/0000
0050/0000   PLUG6,  00;00                   /ADDRESS 0050 : 00 OFF, 01-32 (1D-26D)
0051/0000
0052/0000   PLUG7,  00;00                   /ADDRESS 0052 : 00 OFF, 01-32 (1D-26D)
0053/0000
0054/0000   PLUG8,  00;00                   /ADDRESS 0054 : 00 OFF, 01-32 (1D-26D)
0055/0000
0056/0000   PLUG9,  00;00                   /ADDRESS 0056 : 00 OFF, 01-32 (1D-26D)
0057/0000
0060/0000   PLUG10, 00;00                   /ADDRESS 0060 : 00 OFF, 01-32 (1D-26D)
0061/0000
0062/0000   PLUG11, 00;00                   /ADDRESS 0062 : 00 OFF, 01-32 (1D-26D)
0063/0000
0064/0000   PLUG12, 00;00                   /ADDRESS 0064 : 00 OFF, 01-32 (1D-26D)
0065/0000
0066/0000   PLUG13, 00;00                   /ADDRESS 0066 : 00 OFF, 01-32 (1D-26D)
0067/0000
            /PAGE 0 VARIABLES AND CONSTANTS
0070/0000   CHAR,   0                       /HOLDS THE CHARACTER 
0071/0000   CINDC,  0                       /ROTOR PARAMETER
0072/0000   CROTR,  0                       /ROTOR PARAMETER
0073/0000   CRING,  0                       /ROTOR PARAMETER
0074/0032   C0032,  0032                    /26D
            /ROTOR DATA (DO NOT MOVE)
            *0107
            /"EKMFLGDQVZNTOWYHXUSPAIBRCJ"; ROTOR_1M      MILITARY 1
0107/0005   SROTR1, 05;13;15;06;14;07;04;21;26;32;16;24;17;
0110/0013
0111/0015
0112/0006
0113/0014
0114/0007
0115/0004
0116/0021
0117/0026
0120/0032
0121/0016
0122/0024
0123/0017
0124/0027           27;31;10;4030;25;23;20;01;11;02;22;03;12;
0125/0031
0126/0010
0127/4030
0130/0025
0131/0023
0132/0020
0133/0001
0134/0011
0135/0002
0136/0022
0137/0003
0140/0012
            /"AJDKSIRUXBLHWTMCQGZNPYFVOE"; ROTOR_2M      MILITARY 2
0141/0001   SROTR2, 01;12;04;13;4023;11;22;25;30;02;14;10;27;
0142/0012
0143/0004
0144/0013
0145/4023
0146/0011
0147/0022
0150/0025
0151/0030
0152/0002
0153/0014
0154/0010
0155/0027
0156/0024           24;15;03;21;07;32;16;20;31;06;26;17;05;
0157/0015
0160/0003
0161/0021
0162/0007
0163/0032
0164/0016
0165/0020
0166/0031
0167/0006
0170/0026
0171/0017
0172/0005
            /"BDFHJLCPRTXVZNYEIWGAKMUSQO"; ROTOR_3M      MILITARY 3
0173/0002   SROTR3, 02;04;06;10;12;14;03;20;22;24;30;26;32;
0174/0004
0175/0006
0176/0010
0177/0012
0200/0014
0201/0003
0202/0020
0203/0022
0204/0024
0205/0030
0206/0026
0207/0032
0210/0016           16;31;05;11;27;07;01;13;4015;25;23;21;17;
0211/0031
0212/0005
0213/0011
0214/0027
0215/0007
0216/0001
0217/0013
0220/4015
0221/0025
0222/0023
0223/0021
0224/0017
            /"ESOVPZJAYQUIRHXLNFTGKDCMWB"; ROTOR_4M      MILITARY 4
0225/0005   SROTR4, 05;23;17;26;20;32;12;01;31;4021;25;11;22;
0226/0023
0227/0017
0230/0026
0231/0020
0232/0032
0233/0012
0234/0001
0235/0031
0236/4021
0237/0025
0240/0011
0241/0022
0242/0010           10;30;14;16;06;24;07;13;04;03;15;27;02;
0243/0030
0244/0014
0245/0016
0246/0006
0247/0024
0250/0007
0251/0013
0252/0004
0253/0003
0254/0015
0255/0027
0256/0002
            /"VZBRGITYUPSDNHLXAWMJQOFECK"; ROTOR_5M      MILITARY 5
0257/0026   SROTR5, 26;32;02;22;07;11;24;31;25;20;23;04;16;
0260/0032
0261/0002
0262/0022
0263/0007
0264/0011
0265/0024
0266/0031
0267/0025
0270/0020
0271/0023
0272/0004
0273/0016
0274/0010           10;14;30;01;27;15;12;21;17;06;05;03;4013;
0275/0014
0276/0030
0277/0001
0300/0027
0301/0015
0302/0012
0303/0021
0304/0017
0305/0006
0306/0005
0307/0003
0310/4013
            /"JPGVOUMFYQBENHZRDKASXLICTW"; ROTOR_6M      MILITARY 6
0311/0012   SROTR6, 12;20;07;26;17;25;15;06;31;21;02;05;4016;
0312/0020
0313/0007
0314/0026
0315/0017
0316/0025
0317/0015
0320/0006
0321/0031
0322/0021
0323/0002
0324/0005
0325/4016
0326/0010           10;32;22;04;13;01;23;30;14;11;03;24;4027;
0327/0032
0330/0022
0331/0004
0332/0013
0333/0001
0334/0023
0335/0030
0336/0014
0337/0011
0340/0003
0341/0024
0342/4027
            /"NZJHGRCXMYSWBOUFAIVLPEKQDT"; ROTOR_7M      MILITARY 7
0343/0016   SROTR7, 16;32;12;10;07;22;03;30;15;31;23;27;4002;
0344/0032
0345/0012
0346/0010
0347/0007
0350/0022
0351/0003
0352/0030
0353/0015
0354/0031
0355/0023
0356/0027
0357/4002
0360/0017           17;25;06;01;11;26;14;20;05;13;21;04;4024;
0361/0025
0362/0006
0363/0001
0364/0011
0365/0026
0366/0014
0367/0020
0370/0005
0371/0013
0372/0021
0373/0004
0374/4024
            /"FKQHTLXOCBJSPDZRAMEWNIUYGV"; ROTOR_8M      MILITARY 8
0375/0006   SROTR8, 06;13;21;10;24;14;30;17;03;02;12;23;4020;
0376/0013
0377/0021
0400/0010
0401/0024
0402/0014
0403/0030
0404/0017
0405/0003
0406/0002
0407/0012
0410/0023
0411/4020
0412/0004           04;32;22;01;15;05;27;16;11;25;31;07;4026;
0413/0032
0414/0022
0415/0001
0416/0015
0417/0005
0420/0027
0421/0016
0422/0011
0423/0025
0424/0031
0425/0007
0426/4026
            /"LEYJVCNIXWPBQMDRTAKZGFUHOS"; ROTOR_BETA    MILITARY M4 BETA
0427/0014   SROTB, 14;05;31;12;26;03;16;11;30;27;20;02;21;
0430/0005
0431/0031
0432/0012
0433/0026
0434/0003
0435/0016
0436/0011
0437/0030
0440/0027
0441/0020
0442/0002
0443/0021
0444/0015          15;04;22;24;01;13;32;07;06;25;10;17;23;
0445/0004
0446/0022
0447/0024
0450/0001
0451/0013
0452/0032
0453/0007
0454/0006
0455/0025
0456/0010
0457/0017
0460/0023
            /"FSOKANUERHMBTIYCWLQPZXVGJD"; ROTOR_GAMMA   MILITARY M4 GAMMA
0461/0006   SROTG, 06;23;17;13;01;16;25;05;22;10;15;02;24;
0462/0023
0463/0017
0464/0013
0465/0001
0466/0016
0467/0025
0470/0005
0471/0022
0472/0010
0473/0015
0474/0002
0475/0024
0476/0011          11;31;03;27;14;21;20;32;30;26;07;12;04;
0477/0031
0500/0003
0501/0027
0502/0014
0503/0021
0504/0020
0505/0032
0506/0030
0507/0026
0510/0007
0511/0012
0512/0004
            /"ENKQAUYWJICOPBLMDXZVFTHRGS", ROTOR_REFL4B  MILITARY M4 B REFLECTOR
0513/0005   SREFLB, 05;16;13;21;01;25;31;27;12;11;03;17;20;
0514/0016
0515/0013
0516/0021
0517/0001
0520/0025
0521/0031
0522/0027
0523/0012
0524/0011
0525/0003
0526/0017
0527/0020
0530/0002           02;14;15;04;30;32;26;06;24;10;22;07;23;
0531/0014
0532/0015
0533/0004
0534/0030
0535/0032
0536/0026
0537/0006
0540/0024
0541/0010
0542/0022
0543/0007
0544/0023
            /"RDOBJNTKVEHMLFCWZAXGYIPSUQ"; ROTOR_REFL4C  MILITARY M4 C REFLECTOR
0545/0022   SREFLC, 22;04;17;02;12;16;24;13;26;05;10;15;14;
0546/0004
0547/0017
0550/0002
0551/0012
0552/0016
0553/0024
0554/0013
0555/0026
0556/0005
0557/0010
0560/0015
0561/0014
0562/0006           06;03;27;32;01;30;07;31;11;20;23;25;21;
0563/0003
0564/0027
0565/0032
0566/0001
0567/0030
0570/0007
0571/0031
0572/0011
0573/0020
0574/0023
0575/0025
0576/0021
            *0577
0577/7402   STOP,   HLT                     /FOR MINICOMP MODE THIS HALTS LEAVING
                                            /USER AT ENTRY POINT 0600
            /
            /
            /_PAGE_3_____________________________________________________________
            *0600
0600/7300   ENTRY,  CLA CLL                 /GET MODE
0601/1035           TAD MODE
0602/1355           TAD C7777               /SUBTRACT 1
0603/7450           SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
0604/5232           JMP MINI                /JMP TO MINICOMP MODE
0605/6031   TELE,   KSF                     /SKIP IF READER FLAG SET
0606/5205           JMP .-1                 /WAIT FOR KEY
0607/6036           KRB                     /KBD->ACC, CLEAR FLAG
0610/3070           DCA CHAR                /STORE CHAR SO WE CAN TEST IT
0611/1070           TAD CHAR                /ALLOW ONLY A-Z (65-90)
0612/1354           TAD C7677               /SUBTRACT 65
0613/7710           SPA CLA                 /SKIP ON PLUS OR ZERO, CLEAR ACC
0614/5205           JMP TELE                /LESS THAN 65, SKIP
0615/1070           TAD CHAR                /RESTORE CHAR
0616/1353           TAD C7645               /SUBTRACT 91
0617/7700           SMA CLA                 /SKIP ON MINUS, CLEAR ACC
0620/5205           JMP TELE                /MORE THAN 90, SKIP
0621/7300           CLA CLL                 /IT IS VALID A-Z, RESTORE CHAR
0622/1070           TAD CHAR
0623/1352           TAD C7700               /SUBTRACT 64 SO A=1 (1 BIASED)
0624/4235           JMS CIPHER              /CALL CIPHER
0625/1351           TAD C0100               /ADD 64 SO a=65 (65 BIASED)
0626/6041           TSF                     /SKIP IF PRINT FLAG SET
0627/5226           JMP .-1                 /LOOP UNTIL READY
0630/6046           TLS                     /PRINT
0631/5205           JMP TELE                /WAIT FOR NEXT KEY
0632/7604   MINI,   LAS                     /LOAD AC WITH SWITCH REGISTER
0633/4235           JMS CIPHER              /CALL CIPHER
0634/5756           JMP I PSTOP             /JMP TO STOP FOR HALT
0635/0000   CIPHER, 0                       /SUBROUTINE RETURN ADDRESS STORE HERE
0636/3070           DCA CHAR                /STORE ACC IN CHAR
0637/4757   PST,    JMS I PSTEP             /CALL STEP TO STEP THE ROTORS
0640/4760   PL1,    JMS I PSPLUG            /CALL PLUGBOARD TO SWAP THE LETTERS
0641/1023   F4,     TAD INDC4               /SETUP AND CALL FORWARD ROTOR FOR 4
0642/3071           DCA CINDC
0643/1027           TAD ROTR4
0644/3072           DCA CROTR
0645/1033           TAD RING4
0646/3073           DCA CRING
0647/4761           JMS I PFROTOR
0650/1022   F3,     TAD INDC3               /SETUP AND CALL FORWARD ROTOR FOR 3
0651/3071           DCA CINDC
0652/1026           TAD ROTR3
0653/3072           DCA CROTR
0654/1032           TAD RING3
0655/3073           DCA CRING
0656/4761           JMS I PFROTOR
0657/1021   F2,     TAD INDC2               /SETUP AND CALL FORWARD ROTOR FOR 2
0660/3071           DCA CINDC
0661/1025           TAD ROTR2
0662/3072           DCA CROTR
0663/1031           TAD RING2
0664/3073           DCA CRING
0665/4761           JMS I PFROTOR
0666/1020   F1,     TAD INDC1               /SETUP AND CALL FORWARD ROTOR FOR 1
0667/3071           DCA CINDC
0670/1024           TAD ROTR1
0671/1347           TAD C0010               /BETA/GAMMA ACTUALLY AT 9 AND 10 (+8)
0672/3072           DCA CROTR
0673/1030           TAD RING1
0674/3073           DCA CRING
0675/4761           JMS I PFROTOR
0676/7301   FREFL,  CLA CLL IAC             /LOAD ACC WITH 1
0677/3071           DCA CINDC
0700/1034           TAD REFL
0701/1350           TAD C0012               /REFLECTOR ACTUALLY AT 11 AND 12 (+10)
0702/3072           DCA CROTR
0703/7301           CLA CLL IAC             /LOAD ACC WITH 1
0704/3073           DCA CRING
0705/4761           JMS I PFROTOR           /CALL REFLECTOR
0706/1020   R1,     TAD INDC1               /SETUP AND CALL REVERSE ROTOR FOR 1
0707/3071           DCA CINDC
0710/1024           TAD ROTR1
0711/1347           TAD C0010               /BETA/GAMMA ACTUALLY AT 9 AND 10 (+8)
0712/3072           DCA CROTR
0713/1030           TAD RING1
0714/3073           DCA CRING
0715/4762           JMS I PRROTOR
0716/1021   R2,     TAD INDC2              /SETUP AND CALL REVERSE ROTOR FOR 2
0717/3071           DCA CINDC
0720/1025           TAD ROTR2
0721/3072           DCA CROTR
0722/1031           TAD RING2
0723/3073           DCA CRING
0724/4762           JMS I PRROTOR
0725/1022   R3,     TAD INDC3               /SETUP AND CALL REVERSE ROTOR FOR 3
0726/3071           DCA CINDC
0727/1026           TAD ROTR3
0730/3072           DCA CROTR
0731/1032           TAD RING3
0732/3073           DCA CRING
0733/4762           JMS I PRROTOR
0734/1023   R4,     TAD INDC4               /SETUP AND CALL REVERSE ROTOR FOR 4
0735/3071           DCA CINDC
0736/1027           TAD ROTR4
0737/3072           DCA CROTR
0740/1033           TAD RING4
0741/3073           DCA CRING
0742/4762           JMS I PRROTOR
0743/4760   PL2,    JMS I PSPLUG            /CALL PLUGBOARD TO SWAP THE LETTERS
0744/7300   STR1,   CLA CLL                 /LOAD CHAR INTO ACC TO RETURN
0745/1070           TAD CHAR
0746/5635           JMP I CIPHER            /RETURN FROM SUBROUTINE
            /THIS PAGE VARIABLES AND CONSTANTS
0747/0010   C0010,  0010                    /8D
0750/0012   C0012,  0012                    /10D
0751/0100   C0100,  0100                    /64D
0752/7700   C7700,  7700                    /-64D
0753/7645   C7645,  7645                    /-91D
0754/7677   C7677,  7677                    /-65D
0755/7777   C7777,  7777                    /-1D
0756/0577   PSTOP,  STOP
0757/1041   PSTEP,  STEP
0760/1000   PSPLUG, SPLUG
0761/1200   PFROTOR,FROTOR
0762/1226   PRROTOR,RROTOR
            /
            /
            /_PAGE_4_____________________________________________________________
            *1000
1000/0000   SPLUG,  0                       /SUBROUTINE RETURN ADDRESS STORED HERE
1001/7300           CLA CLL
1002/1307           TAD PPLUG1              /RESET PLUGBOARD POINTER PTR1
1003/3010           DCA PTR1
1004/1305           TAD COUNT               /SETUP COUNT AND INDEX FOR LOOP
1005/7041           CIA                     /NEGATE (INDEX COUNTS UP TO 0)
1006/3306           DCA INDEX1
1007/1410   LOOP,   TAD I PTR1              /CHECK PLUGBOARD PAIR FIRST VALUE
1010/7450           SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
1011/5230           JMP DSBL                /THIS PLUGBOARD PAIR IS DISABLED
1012/7041           CIA                     /NOT DISABLED, CONTINUE COMPARING TO OUR CHAR
1013/1070           TAD CHAR                /ADD CHARACTER, IF IT MATCHES ACC WILL BE 0
1014/7450           SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
1015/5232           JMP MATCH1              /MATCH FIRST VALUE IN PAIR
1016/7300           CLA CLL                 /NOT ZERO, NO MATCH, CLEAR ACC
1017/1410           TAD I PTR1              /GET SECOND PAIR VALUE
1020/7041           CIA                     /COMPARE IT TO OUR CHARACTER
1021/1070           TAD CHAR       
1022/7450           SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
1023/5235           JMP MATCH2              /IT IS ZERO, MATCH SECOND VALUE IN PAIR
1024/7300   LOOP2,  CLA CLL                 /NO MATCH THIS PAIR
1025/2306           ISZ INDEX1
1026/5207           JMP LOOP
1027/5600           JMP I SPLUG             /RETURN FROM SUBROUTINE
1030/1410   DSBL,   TAD I PTR1              /THIS PAIR IS DISABLED, SKIP OTHER HALF
1031/5224           JMP LOOP2
1032/1410   MATCH1, TAD I PTR1              /FIRST WORD MATCHES, OBTAIN OTHER HALF
1033/3070           DCA CHAR
1034/5600           JMP I SPLUG             /RETURN FROM SUBROUTINE
1035/7344   MATCH2, CLA CLL CMA RAL         /SECOND WORD MATCHES, ACC=7776 (-2)
1036/1010           TAD PTR1                /ADD PTR1 TO ACC
1037/3010           DCA PTR1                /DEPOSIT PTR1-2 TO GET FIRST VALUE
1040/5232           JMP MATCH1
1041/0000   STEP,   0                       /SUBROUTINE RETURN ADDRESS STORED HERE
1042/7300           CLA CLL                 /IS ROTOR3 IN NOTCH?
1043/1026           TAD ROTR3
1044/4711           JMS I PRPTR             /SET ROTOR POINTER TO CORRECT ROTOR
1045/1022           TAD INDC3
1046/3310           DCA TEMP1
1047/1710           TAD I TEMP1
1050/0304           AND C4000               /KEEP ONLY NOTCH BIT
1051/7440           SZA                     /SKIP ON ZERO
1052/5264           JMP STEP3               /YES - 3 RIGHT ROTORS MOVE
1053/1027           TAD ROTR4               /IS ROTOR4 IN NOTCH? 
1054/4711           JMS I PRPTR             /SET ROTOR POINTER TO CORRECT ROTOR
1055/1023           TAD INDC4
1056/3310           DCA TEMP1
1057/1710           TAD I TEMP1
1060/0304           AND C4000               /KEEP ONLY NOTCH BIT
1061/7440           SZA                     /SKIP ON ZERO
1062/5271           JMP STEP2               /YES - 2 RIGHT ROTORS MOVE
1063/5276           JMP STEP1               /NO - 1 RIGHT ROTOR MOVES
1064/7300   STEP3,  CLA CLL                 /STEP ROTOR 2
1065/1021           TAD INDC2
1066/7001           IAC
1067/4712           JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
1070/3021           DCA INDC2
                                            /INTENTIONAL LACK OF JMP STEPS REMAINING
1071/7300   STEP2,  CLA CLL                 /STEP ROTOR 3
1072/1022           TAD INDC3
1073/7001           IAC
1074/4712           JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
1075/3022           DCA INDC3
                                            /INTENTIONAL LACK OF JMP STEPS REMAINING
1076/7300   STEP1,  CLA CLL                 /STEP ROTOR 4
1077/1023           TAD INDC4
1100/7001           IAC
1101/4712           JMS I PRBACK            /IF OVERFLOW ROLL IT BACK TO 1
1102/3023           DCA INDC4
                                            /INTENTIONAL LACK OF JMP STEPS REMAINING
1103/5641   STEP0,  JMP I STEP              /RETURN FROM SUBROUTINE
            /THIS PAGE VARIABLES AND CONSTANTS
1104/4000   C4000,  4000                    /NOTCH BIT IN ROTORS
1105/0015   COUNT,  15                      /13D
1106/0000   INDEX1, 0                       /0D
1107/0035   PPLUG1, PLUG1-1                 /POINTER TO WORD BEFORE PLUGBOARD
1110/0000   TEMP1,  0
1111/1271   PRPTR,  RPTR
1112/1301   PRBACK, RBACK
            /
            /
            /_PAGE_5_____________________________________________________________
            *1200
1200/0000   FROTOR, 0
1201/1073           TAD CRING               /CINDC+26-CRING+CHAR
1202/7041           CIA
1203/1071           TAD CINDC
1204/1074           TAD C0032
1205/1070           TAD CHAR
1206/4301           JMS RBACK
1207/3317           DCA TEMP2
1210/1072           TAD CROTR
1211/4271           JMS RPTR                /SET ROTOR POINTER TO CORRECT ROTOR
1212/1317           TAD TEMP2
1213/3317           DCA TEMP2
1214/1717           TAD I TEMP2
1215/0313           AND C0077
1216/7041           CIA
1217/1071           TAD CINDC
1220/7041           CIA
1221/1073           TAD CRING
1222/1074           TAD C0032
1223/4301           JMS RBACK
1224/3070           DCA CHAR
1225/5600           JMP I FROTOR            /RETURN FROM SUBROUTINE
1226/0000   RROTOR, 0
1227/3320           DCA TEMP3               /STORE 0
1230/1074           TAD C0032
1231/7041           CIA                     /NEGATE (INDEX COUNTS UP TO 0)
1232/3316           DCA INDEX2
1233/2320   LOOP3,  ISZ TEMP3
1234/1073           TAD CRING               /CINDC+26-CRING+CHAR
1235/7041           CIA
1236/1071           TAD CINDC
1237/1074           TAD C0032
1240/1320           TAD TEMP3
1241/4301           JMS RBACK
1242/3317           DCA TEMP2
1243/1072           TAD CROTR
1244/4271           JMS RPTR                /SET ROTOR POINTER TO CORRECT ROTOR
1245/1317           TAD TEMP2
1246/3317           DCA TEMP2
1247/1717           TAD I TEMP2
1250/0313           AND C0077
1251/7041           CIA
1252/1071           TAD CINDC
1253/7041           CIA
1254/1073           TAD CRING
1255/1074           TAD C0032
1256/4301           JMS RBACK
1257/7041           CIA                     /COMPARE BY NEGATING
1260/1070           TAD CHAR                /ADD CHARACTER, IF IT MATCHES ACC WILL BE 0
1261/7450           SNA                     /SKIP NEXT INSTRUCTION IF NON ZERO
1262/5266           JMP MATCH3              /MATCH FIRST VALUE IN PAIR
1263/2316           ISZ INDEX2
1264/7300           CLA CLL
1265/5233           JMP LOOP3
1266/1320   MATCH3, TAD TEMP3
1267/3070           DCA CHAR
1270/5626           JMP I RROTOR            /RETURN FROM SUBROUTINE
1271/0000   RPTR,   0                       /CALCULATE ROTOR POINTER 
1272/7041           CIA
1273/3315           DCA TEMP4
1274/1074   PTRLP,  TAD C0032
1275/2315           ISZ TEMP4
1276/5274           JMP PTRLP
1277/1312           TAD C0054
1300/5671           JMP I RPTR              /RETURN FROM SUBROUTINE
1301/0000   RBACK,  0                       /IF ACC>32, SUBTRACT 32 UNTIL IT IS
1302/3315   RBACK2, DCA TEMP4
1303/1315           TAD TEMP4
1304/1314           TAD C7746
1305/7540           SMA SZA
1306/5302           JMP RBACK2
1307/7300           CLA CLL
1310/1315           TAD TEMP4
1311/5701           JMP I RBACK             /RETURN FROM SUBROUTINE
            /THIS PAGE VARIABLES AND CONSTANTS
1312/0054   C0054,  0054                    /CONSTANT TO GENERATE ROTOR PTR
1313/0077   C0077,  0077                    /63D
1314/7746   C7746,  7746                    /-26D
1315/0000   TEMP4,  0
1316/0000   INDEX2, 0
1317/0000   TEMP2,  0
1320/0000   TEMP3,  0
            $ENTRY
$0600

User Defined Symbol Table

PTR1    0010
INDC1   0020
INDC2   0021
INDC3   0022
INDC4   0023
ROTR1   0024
ROTR2   0025
ROTR3   0026
ROTR4   0027
RING1   0030
RING2   0031
RING3   0032
RING4   0033
REFL    0034
MODE    0035
PLUG1   0036
PLUG2   0040
PLUG3   0042
PLUG4   0044
PLUG5   0046
PLUG6   0050
PLUG7   0052
PLUG8   0054
PLUG9   0056
PLUG10  0060
PLUG11  0062
PLUG12  0064
PLUG13  0066
CHAR    0070
CINDC   0071
CROTR   0072
CRING   0073
C0032   0074
SROTR1  0107
SROTR2  0141
SROTR3  0173
SROTR4  0225
SROTR5  0257
SROTR6  0311
SROTR7  0343
SROTR8  0375
SROTB   0427
SROTG   0461
SREFLB  0513
SREFLC  0545
STOP    0577
ENTRY   0600
TELE    0605
MINI    0632
CIPHER  0635
PST     0637
PL1     0640
F4      0641
F3      0650
F2      0657
F1      0666
FREFL   0676
R1      0706
R2      0716
R3      0725
R4      0734
PL2     0743
STR1    0744
C0010   0747
C0012   0750
C0100   0751
C7700   0752
C7645   0753
C7677   0754
C7777   0755
PSTOP   0756
PSTEP   0757
PSPLUG  0760
PFROTOR 0761
PRROTOR 0762
SPLUG   1000
LOOP    1007
LOOP2   1024
DSBL    1030
MATCH1  1032
MATCH2  1035
STEP    1041
STEP3   1064
STEP2   1071
STEP1   1076
STEP0   1103
C4000   1104
COUNT   1105
INDEX1  1106
PPLUG1  1107
TEMP1   1110
PRPTR   1111
PRBACK  1112
FROTOR  1200
RROTOR  1226
LOOP3   1233
MATCH3  1266
RPTR    1271
PTRLP   1274
RBACK   1301
RBACK2  1302
C0054   1312
C0077   1313
C7746   1314
TEMP4   1315
INDEX2  1316
TEMP2   1317
TEMP3   1320
 
Great program, but I have no idea how to compile it. Do you have some tutorial? (I'm a dec pdp newbie here...)

Hello,

one possibility is compiling with palbart. Palbart produces file output in RIM or BIN format, so you can upload it directly to the pdp/8 with BIN or RIM loader with the serial card.
That is very easy to use.
https://github.com/radekh/palbart


Have fun,
Volker
 
Back
Top