Image Map Image Map
Page 1 of 2 12 LastLast
Results 1 to 10 of 13

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

  1. #1

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

    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!

  2. #2
    Join Date
    Jun 2012
    Location
    UK - Worcester
    Posts
    3,000

    Default

    Yes,

    There is a 4K FORTRAN and FOCAL.

    Somewhere there is also a 4K BASIC.

    Dave

  3. #3

    Default

    I can't find the 4K BASIC or the 8K, anyone know if they are avaliable to download somewhere?

  4. #4
    Join Date
    Jun 2012
    Location
    UK - Worcester
    Posts
    3,000

    Default

    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

  5. #5

    Default

    Maybe you find this here:

    http://deramp.com/downloads/mfe_arch...EC%20Software/

    under BASIC/Papertapes.

    Volker

  6. #6

    Default

    Maybe you may also have a look at this discussion here:
    https://groups.google.com/forum/#!to...p8/lNSWs2oUYh8

    There is a link for the download of an 8k Basic in the dscussion.

    maybe you have to configure the tape, if you have a pdp8/e or a lab8/e. Concerning to the documentation I found at bitsavers:
    http://bitsavers.informatik.uni-stut...ec/pdp8/basic/

    Volker

  7. #7

    Default

    Awsome, thanks!

  8. #8

    Default

    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

  9. #9

    Default

    Great program, but I have no idea how to compile it. Do you have some tutorial? (I'm a dec pdp newbie here...)

  10. #10

    Default

    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

Bookmarks

Posting Permissions

  • You may not post new threads
  • You may not post replies
  • You may not post attachments
  • You may not edit your posts
  •