From c74c9c35300d4a7a5f437dd027eb3c9f1c817ee9 Mon Sep 17 00:00:00 2001 From: Lars Brinkhoff Date: Fri, 13 Jun 2025 20:26:43 +0200 Subject: [PATCH] Add code for the Freeway Crossing game. This is the original code for running on an Alpha machine. It was written by Michael Irrgang in 1971 for use in psychological experiments at University of Washington. --- src/imsrc/free.way | 1507 ++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 1507 insertions(+) create mode 100644 src/imsrc/free.way diff --git a/src/imsrc/free.way b/src/imsrc/free.way new file mode 100644 index 00000000..2bd1cc06 --- /dev/null +++ b/src/imsrc/free.way @@ -0,0 +1,1507 @@ + TITL FREEWAY CROSSING PROGRAM + SAVE + LOAD + EVEN + ORG 100 + JMS INPUT /MAIN PROGRAM + JMS START1 START UP BY INITIALIZING +LOOP1 JMS KEYS /CHECK AND ACT ON KEYBOARD + LAC #SETFIRE + ASZ NO CHANGE IN POSITION UNLESS SET + JMS POS /MODIFY CAR POSITIONS + LAC #SCOREINC + ISZ #SCOREINC + RAR 1 + LSZ EVERY SECOND LOOP CHANGE SCORE + JMP LOOP2-2 + LAC #SETFIRE + ASZ + JMS SCOREMOD MODIFY SCORE + JMS EXEC EXECUTE DISPLAY + JMP LOOP1 /LOOP IF SUBJECT NOT MOVING +LOOP2 JMS POS /MODIFY CAR POSITIONS + JMS SUBJECT /MODIFY SUBJECT'S POSITION + JMS CRASH /CHECK FOR CRASH, IF SO ACT ON IT + JMS END /CHECK IF SUBJECT CROSSED INTERSECTION + JMS EXEC /EXECUTE DISPLAY + JMP LOOP2 /END OF MAIN PROGRAM,LOOP +POS BSS 1 /GET NEW CAR POSITIONS + LAW CARTAB /INDEXING + DAC #CARTAB /FOR CAR TABLE + LAW RVEL /INDEXING + DAC #RVEL /FOR RANDOM VELOCITY + LAW VEL /INDEXING + DAC #VEL /FOR VELOCITIES + LAW POSIT + DAC #POSIT /FOR CURRENT POSITIONS + LWC 6 /LOOP SIX TIMES + DAC #CTR +POSLP I LAC #RVEL /GET VELOCITY FOR CAR + ASN + JMP POSZERO /IF ZERO GO TO NEXT ONE + I ADD #POSIT /ADD CURRENT POSITION + ASP /SKIP IF POSITIVE, CHECK FOR OFF SCREEN LEFT + JMS NEG + SUB =2640 /CHECK FOR OFF SCREEN RIGHT + ASM + JMS PLUS + + ADD =2640 + I DAC #POSIT /STORE + JMS CONVERT + I DAC #CARTAB +POSZERO ISZ #RVEL + ISZ #VEL + ISZ #POSIT + ISZ #CARTAB + ISZ #CTR + JMP POSLP /LOOP BACK + LAC CARTAB + DAC CAR1 + LAC CARTAB+1 + DAC CAR2 + LAC CARTAB+2 + DAC CAR3 + LAC CARTAB+3 + DAC CAR4 + LAC CARTAB+4 + DAC CAR5 + LAC CARTAB+5 + DAC CAR6 + I JMP POS /RETURN +NEG BSS 1 /TAKE CARE OF OFF LEFT POSITION + JMS RRRR /GET RANDOM VELOCITY + CIA + I DAC #RVEL + LAC =2637 + I JMP NEG /RETURN +PLUS BSS 1 /TAKE CARE OF OFF RIGHT POSITION + JMS RRRR /GET RANDOM VELOCITY + I DAC #RVEL + LWC 2640 + I JMP PLUS /RETURN +RRRR BSS 1 /SUBROUTINE FOR RANDOM VELOCITIES + I LAC #VEL /GETS RVEL: VEL>=RVEL>=VEL/2 + JMS RAND + I ADD #VEL + SAR 1 + I JMP RRRR /RETURN +CONVERT BSS 1 /CONVERT TO D LXA + SAR 1 + DAC #TMP + LAW 11 + DAC .+3 + LAC #TMP + JMS D + + BSS 1 + SAL 3 + SAL 2 /GET MSB PORTION + ADD .-3 /ADD LSB PORTION + ADD =11400 /MAKE D LXA + I JMP CONVERT /RETURN +SUBJECT BSS 1 /GET POSITION FOR SUBJECT + LAC #SUBPOS + ADD #SUBVEL + DAC #SUBPOS /GET NEW POSITION + SAL 1 + JMS CONVERT + ADD =11500 /MAKE D LYA + DAC CAR0 /STORE IN DISPLAY + I JMP SUBJECT /RETURN +RVEL OCT 40 /STORAGE FOR RANDOM VELOCITIES + OCT 40 + OCT 40 + OCT 177740 + OCT 177740 + OCT 177740 +VEL OCT 40 /TABLE OF VELOCITIES + OCT 40 + OCT 40 + OCT 40 + OCT 40 + OCT 40 +POSIT HLT /TABLE OF CURRENT POSITIONS + HLT + HLT + HLT + HLT + HLT +CARTAB BSS 6 /TABLE FOR CARS +TAB1 D JMS LETTER+45 ZERO +TAB D JMS B3 /NUMBER TABLE + D JMS B3+5 + D JMS B3+13 + D JMS B3+20 + D JMS B3+26 + D JMS B3+33 + D JMS B3+42 + D JMS B3+46 + D JMS B3+56 +KEYS BSS 1 /KEYBOARD READ ROUTINE + KSF /SKIP ON KEYBOARD FLAG + I JMP KEYS /OTHERWISE RETURN + + CLA + KRC + AND =177 + SAM =2 TRANSMIT + JMP K2 + LAC #SETFIRE + ASZ SKIP IF ZERO + JMP K3 + COA FINISH SETTING + DAC #SETFIRE + LAC ==X THEN BEGIN A:=A-X; SETBIT15... + /IF -DIV THEN A:=-A + /IF -DSN THEN Q:=-QUOTIENT + /COMMENT QUOTIENT IN Q, REMAINDER IN A + CLL /CLEAR LINK + ASM /DIVIDEND NEGATIVE? + JMP .+3 /NO + CIA /YES,2'S COMP. AC + CML /COMP. LINK (REMEMBER SIGN) + DAC D+73 /DIVIDEND IN Q + + STA /-1 TO AC + LSN /DIVIDEND NEGATIVE? + CLA /NO,0 TO DIV(REMAINDER POS) + DAC D+74 /YES,-1 TO DIV (REMAINDER NEG) + I LAC D /DIVISOR TO AC + ASM /DIVISOR NEGATIVE? + JMP .+3 /NO + CIA /YES,2'S COMP DIVISOR + CML /COMP LINK(0=POS QUOT,1=NEG QUOT) + DAC D+75 /DIVISOR IN X + ASZ /DIVISOR=0? + JMP .+4 /NO + STL /YES,SET LINK + ISZ D /INCREMENT PAST DIVISOR TO RTN ADR + I JMP D /RETURN + CLA /CLEAR AC + DAC D+76 /A=0 + LSZ /QUOTIENT POS(LINK 0)? + STA /NO,-1 TO DSN(QUOTIENT NEG) + DAC D+77 /YES,0 TO DSN (QUOTIENT POS) + LWC 20 /-16 TO AC + DAC D+100 /INITIALIZE COUNT IN D?T + LAC D+73 /Q INTO AC + CLL /CLEAR LINK(SET Q(15)=0) + RAL 1 /DOUBLE WORD + DAC D+73 /ROTATE (Q) + LAC D+76 /LEFT (A) + RAL 1 /ONE + DAC D+76 /BIT (A) + SUB D+75 /SUBTRACT X FROM A + ASP /IS A>=X(AC POS) + JMP D+53 /NO, GO ROTATE + DAC D+76 /YES,AC NOW A + LAW 1 /SET BIT + IOR D+73 /15 + DAC D+73 /OF Q + ISZ D+100 /BUMP COUNTER,COUNT=0? + JMP D+35 /NO,LOOP AGAIN + ASN /IF DIVIDEND = 0, A (REMAINDER IN ALGORITH... + JMP .+6 /LEAVE WORD AFTER JMS (REMAINDER) UNTOUCHED + LAC D+76 /REMAINDER INTO AC + ISZ D+74 /REMAINDER NEG? + CIA /NO POS,2'S COMP + CIA /YES 2'S COMP IT + I DAC D /PLACE IT IN WORD AFTER JMS + ISZ D /POINT TO RETURN ADR + LAC D+73 /QUOTIENT Q INTO AC + + ISZ D+77 /QUOTIENT NEG + CIA /NO,POS,2'S COMP IT + CIA /YES,2'S COMP IT + CLL /CLEAR LINK (DIVISOR NE 0) + I JMP D /RETURN + BSS 6 /STORAGE +OUTPUT BSS 1 OUTPUT A NUMBER AND A COMMA + DAC #TMP + CLA + DAC #BLANK BLANK INDICATOR + LAW 12 CONVERT TO DECIMAL + DAC ODIV + DAC ODIV+2 + DAC ODIV+4 + DAC ODIV+6 + LAC #TMP + JMS D +ODIV BSS 1 + JMS D + BSS 1 + JMS D + BSS 1 + JMS D + BSS 1 + JMS OUT1 START OUTPUTTING DECIMAL DIGITS + LAC ODIV+6 + JMS OUT1 + LAC ODIV+4 + JMS OUT1 + LAC ODIV+2 + JMS OUT1 + COA CHANGE BLANK INDICATOR FOR LAST DIGIT + DAC #BLANK + LAC ODIV + JMS OUT1 + LAW 54 COMMA + JMS WRITE + I JMP OUTPUT RETURN +OUT1 BSS 1 OUTPUT DIGIT UNLESS BLANK + DAC #TMP + ASZ + JMP .+4 + LAC #BLANK + ASN + I JMP OUT1 RETURN IF BLANK + COA + DAC #BLANK OTHERWISE SET BLANK IND. TO 1 + + LAC #TMP + JMS WRITE + I JMP OUT1 RETURN +WRITE BSS 1 SUBROUTINE TO PACK OUTPUT IN BUFFER B + DAC #OTD + LAC #OTC FIRST OR SECOND BYTE INDICATOR + ISZ #OTC + RAR 1 + LSZ + JMP .+7 + LAC #OTD FIRST BYTE + SAL 3 + SAL 3 + SAL 2 + I DAC #OTA PUT IN BUFFER + I JMP WRITE RETURN + I LAC #OTA SECOND BYTE + ADD #OTD + I DAC #OTA PUT IN BUFFER + ISZ #OTA + CLA + I DAC #OTA EXTRA ZERO WORD + LAC #OTA + SAM =10000 RETURN UNLESS BUFFER FULL + I JMP WRITE RETURN + HLT IF SO STOP, NOW MUST OUTPUT AND RESTART AT... +EXEC BSS 1 /EXECUTE ONE DISPLAY CYCLE + DSN + JMP .-1 + SSF + JMP .-1 + SCF + LDA /LOAD DATA SWITCHES + ASM /SKIP IF BIT 0 ON + HLT /OTHERWISE STOP + LAW DIS /GET DISPLAY ADDRESS + DLA + DON /RUN DISPLAY + I JMP EXEC /RETURN +LRD1 INC EB30 + INC 3030 + INC 3030 + INC 3030 + INC D00A131 + D IXM + D IXM + D IXM + + D RJM +LLD2 D DXM + D DXM + INC ED30 + INC B-30-30 + INC B-30-30 + INC-B-30-30 + INC -30A111 + D DXM + D DXM + D RJM +LRD3 D IXM + D IXM + INC ED-30 + INC B3030 + INC B3030 + INC B3030 + INC 30A131 + D IXM + D RJM +LLD4 INC EB-30 + INC -30-30 + INC -30-30 + INC -30-30 + INC D00A111 + D DXM + D DXM + D DXM + D DXM + D RJM +LR5 INC EB30 + INC 3030 + INC 3030 + INC 30A131 + D IXM + D RJM +CAR INC ED-33 /WORD CAR + INC -10B-30 + INC -200-3 + INC 0-320 + INC 30D10 + INC B2313 + INC 2-31-3 + INC D-12B-30 + INC D302-2 + INC B0303 + INC 302-1 + + INC 0-1-2-1 + INC -30D30 + INC B2-3D33 + INC 30B03 /SQUARE + INC 0303 + INC 0303 + INC -30-30 + INC -30-30 + INC -30-30 + INC -30-30 + INC -30-30 + INC 0-30-3 + INC 0-30-3 + INC 0-30-3 + INC 0-30-3 + INC 0-30-3 + INC 3030 + INC 3030 + INC 3030 + INC 3030 + INC 3030 + INC 0303 + INC 0303 + INC 03F +UP INC EB03 /LINE GOING UP + INC 0303 + INC 0303 + INC 03A113 + D IYM + D RJM +B3 INC ED10 /ONE + INC B2020 + INC D-20B03 + INC 0302 + INC -2-2F + INC ED03 /TWO + INC 03B22 + INC 202-2 + INC -1-2-2-1 + INC -3-330 + INC 30F + INC EB30 /THREE + INC 32-22 + INC -30D30 + INC B22-22 + INC -30F + INC ED30 /FOUR + + INC D10B03 + INC 0302 + INC -3-3-1-2 + INC 3030 + INC FF + INC EB30 /FIVE + INC 3102 + INC -32-30 + INC 0330 + INC 30E + INC ED03 /SIX + INC B2120 + INC 2-2-2-2 + INC -20-22 + INC 0323 + INC 202-2 + INC FF + INC EB23 /SEVEN + INC 3312 + INC -30-30 + INC FF + INC ED20 /EIGHT + INC B2021 + INC 02-31 + INC -3222 + INC 202-2 + INC -3-2-1-1 + INC 0-22-1 + INC FF + INC ED30 /NINE + INC B2313 + INC 03-30 + INC -2-22-2 + INC 30E +CRUNCH INC ED22 /CRUNCH DRAWING ROUTINE + INC 00B-2-2 + INC -33-11 + INC 2222 + INC 2-2D3-3 + INC 0-3B03 + INC 0302 + INC 303-2 + INC -3-2-30 + INC D20B2-2 + INC 2-2D3-3 + INC 2-30-3 + INC 0-30-2 + + INC B-3-3-2-3 + INC -23-23 + INC -23-23 + INC -3-2-3-2 + INC -3-2-3-2 + INC 1313 + INC -31-31 + INC -31-31 + INC 3232 + INC 32-33 + INC -3331 + INC 31-23 + INC -23-23 + INC 3-13-1 + INC 1313 + INC 133-3 + INC 3-313 + INC 133-2 + INC 3-23-2 + INC 2323 + INC D00A111 + D IXM + D IXM + D IXM + D IXM + INC ED30 + INC 3030 + INC 3030 + INC B11-11 + INC 1303 + INC -200-3 + INC 1-3-1-1 + INC 1-1D-20 + INC -20B03 + INC 0302 + INC D0-20-2 + INC B-30-30 + INC D0202 + INC B0-30-3 + INC 0-2D-32 + INC B-2-2-22 + INC -2222 + INC 222-2 + INC D-32-30 + INC -30B0-3 + INC 0-30-2 + INC -22-23 + + INC -230-3 + INC 0-30-2 + INC D-3303 + INC 02B-1-3 + INC -1-3-1-2 + INC -12-13 + INC -13D03 + INC 0303 + INC 0303 + INC 01B3-3 + INC 3-333 + INC 332-3 + INC 2-32-3 + INC 2323 + INC 122-3 + INC 2-332 + INC 3232 + INC 0-30-3 + INC 3131 + INC 31-2-3 + INC -2-3-2-3 + INC 3-23-2 + INC 3-2-3-2 + INC -3-23-3 + INC 3-3-30 + INC -30-30 + INC 1-31-3 + INC 1-3-32 + INC -32-32 + INC -1-3-1-3 + INC -1-3-33 + INC -33-2-3 + INC -2-3-2-3 + INC -23-23 + INC -3-3-3-3 + INC -33-33 + INC FF +LETTER INC EB13 A + INC 1312 + INC 1-31-3 + INC 1-2D-23 + INC B-30F + INC ED32 C + INC 30B-2-2 + INC -20-22 + INC 0323 + INC 202-2 + + INC FF + INC EB03 D + INC 0302 + INC 302-1 + INC 1-20-2 + INC -1-2-2-1 + INC -30F + INC EB30 E + INC 30A11 + INC B0202 + INC 30D-30 + INC B0202 + INC 3030 + INC FF + INC EB03 H + INC 0302 + INC D0-30-1 + INC B3030 + OCT 703 + INC B0302 + INC FF + INC EB03 N + INC 0302 + INC 2-32-3 + INC 2-203 + INC 0302 + INC FF + INC ED10 O + INC B2020 + INC 1302 + INC -13-20 + INC -20-1-3 + INC 0-21-3 + INC FF + INC EB03 P + INC 0302 + INC 303-1 + INC 0-2-3-1 + INC -30F + INC EB03 R + INC 0302 + INC 303-1 + INC 0-2-3-1 + INC -30D30 + INC B2-21-2 + INC FF + INC ED01 S + + INC B2-130 + INC 13-31 + INC -3113 + INC 302-1 + INC FF + INC ED30 T + INC B0303 + INC 02A10 + INC B3030 + INC FF + INC EB03 W + INC 0302 + OCT 733 + INC B3-303 + INC 0302 + INC FF + INC ED30 Y + INC B0203 + INC 33A10 + INC B3-3F + INC ED32 : + INC B00D03 + INC D01B00 + INC FF +REST D NOP /DISPLAY WAIT ROUTINE + D NOP + D NOP + D NOP + D NOP + D NOP + D NOP + D NOP + D NOP + D NOP + D RJM /RETURN +DIS D HVC /START OF DISPLAY + D STS 1 + D LXA 1400 /DRAW HIGHWAY + D LYA 4600 + D NOP + D NOP + D NOP + D NOP + D NOP + D JMS LR5 + D JMS LR5 + D JMS LR5 + + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D IXM + D IXM + D IXM + D IXM + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D DYM + D DYM + D DYM + D DYM + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D DYM + D DYM + D DYM + D DYM + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D DYM + D DYM + D DYM + D DYM + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D DYM + D DYM + D DYM + D DYM + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD1 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D JMS LRD3 + D DYM + D DYM + D DYM + D DYM + D JMS LLD4 + D JMS LLD4 + + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD4 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D JMS LLD2 + D DYM + D DYM + D DYM + D DYM + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D IXM + D IXM + D IXM + D IXM + D JMS LR5 + D JMS LR5 + + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D JMS LR5 + D LXA 4000 + D LYA 3100 + D JMS REST + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP + D JMS UP +SCORE D NOP + D LXA 3640 + D LYA 6000 + D JMS REST + D JMS LETTER+70 S + D JMS LETTER+5 C + D JMS LETTER+45 O + D JMS LETTER+61 R + D JMS LETTER+21 E + D JMS LETTER+115 : + D LXA 3640 + D DYM + D DYM + + D JMS REST + D IXM +NUM1 D IXM + D IXM + D IXM + D IXM + D JMS LETTER+45 + D LXA 4000 +SET D NOP + D LXA 3400 + D LYA 2000 + D JMS REST + D JMS LETTER+70 S + D JMS LETTER+21 E + D JMS LETTER+76 T + D IXM + D JMS LETTER+5 C + D JMS LETTER A + D JMS LETTER+61 R + D IXM + D JMS LETTER+70 S + D JMS LETTER+54 P + D JMS LETTER+21 E + D JMS LETTER+21 E + D JMS LETTER+13 D + D LXA 4000 +FIRE D NOP + D LXA 3400 + D LYA 2000 + D JMS REST + D JMS LETTER+70 S + D JMS LETTER+76 T + D JMS LETTER A + D JMS LETTER+61 R + D JMS LETTER+76 T + D IXM + D JMS LETTER+103 W + D JMS LETTER+30 H + D JMS LETTER+21 E + D JMS LETTER+37 N + D IXM + D JMS LETTER+61 R + D JMS LETTER+21 E + D JMS LETTER A + D JMS LETTER+13 D + D JMS LETTER+111 Y + D LXA 4000 + +CAR0 D LYA 3100 + D JMS REST + D JMS CAR + D LXA 4000 + D LYA 2700 + D JMS REST +DIGIT D JMS B3 +CAR1 D LXA 1400 + D LYA 3300 + D JMS REST + D JMS CAR +CAR2 D LXA 1400 + D LYA 3500 + D JMS REST + D JMS CAR +CAR3 D LXA 1400 + D LYA 3700 + D JMS REST + D JMS CAR +CAR4 D LXA 1400 + D LYA 4100 + D JMS REST + D JMS CAR +CAR5 D LXA 1400 + D LYA 4300 + D JMS REST + D JMS CAR +CAR6 D LXA 1400 + D LYA 4500 + D JMS REST + D JMS CAR + D LXA 3700 + D LYA 2000 + D JMS REST +CRUNCH0 D NOP + D LXA 4000 /CENTER BEAM AND WAIT + D LYA 4000 + D HLT +L BSS 1 LITERALS GO HERE + ORG 3000 + ISZ #OTA MODULE TO PRINT OUTPUT BUFFER--START HERE + LAC =B + DAC #OTB UNPACK COUNTER + CLA + DAC #OTC FIRST OR SECOND BYTE COUNTER +LPP LAC #OTC + ISZ #OTC + + RAR 1 + I LAC #OTB LOAD PACKED WORD + LSN + JMP .+3 + ISZ #OTB + JMP .+4 + SAR 3 FIRST BYTE + SAR 3 + SAR 2 + TSF SECOND BYTE + JMP .-1 + TPC TRANSMIT BYTE + LAC #OTB + SAM #OTA CHECK FOR LAST ZERO WORD + JMP LPP + HLT PROGRAM END +B BSS 1 PRINT BUFFER + REL 1 LITERALS + END