1
0
mirror of https://github.com/PDP-10/its.git synced 2026-03-21 00:48:06 +00:00

Convert Freeway Crossing to run on a Graphics machine.

The original game was coded to run on an Alpha PDS-1.  The Imlacs used
at MIT were Graphics machines, hence it's more useful for the game to
run on those.
This commit is contained in:
zharper
2025-06-23 11:59:24 +02:00
committed by Lars Brinkhoff
parent 9f92760301
commit 3352f1cc0a

View File

@@ -1,5 +1,6 @@
TITLE FREEWAY CROSSING PROGRAM
IFNDEF BEGIN, BEGIN=10000
IFNDEF ALPHA, ALPHA=0
.INSRT IMLAC;IMDEFS
.ADDR.=1
LOC BEGIN
@@ -88,6 +89,7 @@ RRRR: 0 ;SUBROUTINE FOR RANDOM VELOCITIES
I JMP RRRR ;RETURN
CONVERT: 0 ;CONVERT TO DLXA
SAR 1
IFN ALPHA,[
DAC TMP'
LAW 11
DAC .+3
@@ -99,6 +101,8 @@ CONVERT: 0 ;CONVERT TO DLXA
SAL 2 ;GET MSB PORTION
ADD .-3 ;ADD LSB PORTION
ADD [11400] ;MAKE DLXA
]
.ELSE ADD [10230]
I JMP CONVERT ;RETURN
SUBJECT: 0 ;GET POSITION FOR SUBJECT
LAC SUBPOS'
@@ -106,7 +110,8 @@ SUBJECT: 0 ;GET POSITION FOR SUBJECT
DAC SUBPOS' ;GET NEW POSITION
SAL 1
JMS CONVERT
ADD [11500] ;MAKE DLYA
IFN ALPHA,ADD [11500] ;MAKE DLYA
.ELSE ADD [10352]
DAC CAR0 ;STORE IN DISPLAY
I JMP SUBJECT ;RETURN
RVEL: 40 ;STORAGE FOR RANDOM VELOCITIES
@@ -442,7 +447,9 @@ START: 0 ;INITIALIZATION ROUTINE
JMS WRITE
LAW 12 ;LF
JMS WRITE
START2: LAC [DLYA 3100]
START2:
IFN ALPHA,LAC [DLYA 3100]
.ELSE LAC [DLYA 602]
DAC CAR0 ;INITIALIZE SUBJEXT
CLA
DAC SUBPOS'
@@ -461,7 +468,8 @@ START2: LAC [DLYA 3100]
JMP LOOP1 ;RETURN
ENDD: 0 ;DID THE SUBJECT MAKE IT?
LAC CAR0
SUB [DLYA 4700]
IFN ALPHA,SUB [DLYA 4700]
.ELSE SUB [DLYA 1176]
ASP
I JMP ENDD ;RETURN IF HE DIDN'T
CLA
@@ -831,6 +839,7 @@ LRD1: INC E,B30
INC B30,B30
INC B30,B30
INC B30,B30
IFN ALPHA,[
INC D00,131
DIXM
DIXM
@@ -840,9 +849,19 @@ LRD1: INC E,B30
LLD2: DDXM
DDXM
INC E,D30
]
.ELSE [
INC D30,D30
INC D30,D30
INC D30,X
LLD2: INC E,DM30
INC DM30,DM30
INC DM30,DM30
]
INC BM30,BM30
INC BM30,BM30
INC BM30,BM30
IFN ALPHA,[
INC BM30,N
DDXM
DDXM
@@ -850,28 +869,48 @@ LLD2: DDXM
LRD3: DIXM
DIXM
INC E,DM30
]
.ELSE [
INC BM30,X
LRD3: INC E,D30
INC D30,D30
INC D30,D30
]
INC B30,B30
INC B30,B30
INC B30,B30
IFN ALPHA,[
INC B30,131
DIXM
DRJM
]
.ELSE B30,X
LLD4: INC E,BM30
INC BM30,BM30
INC BM30,BM30
INC BM30,BM30
IFN ALPHA,[
INC D00,N
DDXM
DDXM
DDXM
DDXM
DRJM
]
.ELSE [
INC DM30,DM30
INC DM30,DM30
INC DM30,X
]
LR5: INC E,B30
INC B30,B30
INC B30,B30
IFN ALPHA,[
INC B30,131
DIXM
DRJM
]
.ELSE INC B30,X
CAR: INC E,DM33 ;WORD CAR
INC DM10,BM30
INC BM20,B0M3
@@ -911,9 +950,12 @@ CAR: INC E,DM33 ;WORD CAR
UP: INC E,B03 ;LINE GOING UP
INC B03,B03
INC B03,B03
IFN ALPHA,[
INC B03,113
DIYM
DRJM
]
.ELSE INC B03,X
B3: INC E,D10 ;ONE
INC B20,B20
INC DM20,B03
@@ -1001,10 +1043,16 @@ CRUNCH: INC E,D22 ;CRUNCH DRAWING ROUTINE
INC B3M2,B3M2
INC B23,B23
INC D00,N
IFN ALPHA,[
DIXM
DIXM
DIXM
DIXM
]
.ELSE [
DLXA 1022
DLYA 340
]
INC E,D30
INC D30,D30
INC D30,D30
@@ -1162,8 +1210,14 @@ REST: DNOP ;DISPLAY WAIT ROUTINE
DIS: DHVC ;START OF DISPLAY
DADR
DSTS 1
IFN ALPHA,[
DLXA 1400 ;DRAW HIGHWAY
DLYA 4600
]
.ELSE [
DLXA 230
DLYA 1154
]
DNOP
DNOP
DNOP
@@ -1189,10 +1243,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LR5
DJMS LR5
DJMS LR5
IFN ALPHA,[
DIXM
DIXM
DIXM
DIXM
]
.ELSE DLXA 1022
DJMS LR5
DJMS LR5
DJMS LR5
@@ -1212,10 +1269,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LR5
DJMS LR5
DJMS LR5
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 1110
DJMS LLD4
DJMS LLD4
DJMS LLD4
@@ -1237,10 +1297,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LLD2
DJMS LLD2
DJMS LLD2
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 1044
DJMS LRD1
DJMS LRD1
DJMS LRD1
@@ -1261,10 +1324,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LRD3
DJMS LRD3
DJMS LRD3
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 1000
DJMS LLD4
DJMS LLD4
DJMS LLD4
@@ -1286,10 +1352,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LLD2
DJMS LLD2
DJMS LLD2
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 734
DJMS LRD1
DJMS LRD1
DJMS LRD1
@@ -1310,10 +1379,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LRD3
DJMS LRD3
DJMS LRD3
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 670
DJMS LLD4
DJMS LLD4
@@ -1335,10 +1407,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LLD2
DJMS LLD2
DJMS LLD2
IFN ALPHA,[
DDYM
DDYM
DDYM
DDYM
]
.ELSE DLYA 624
DJMS LR5
DJMS LR5
DJMS LR5
@@ -1358,10 +1433,13 @@ DIS: DHVC ;START OF DISPLAY
DJMS LR5
DJMS LR5
DJMS LR5
IFN ALPHA,[
DIXM
DIXM
DIXM
DIXM
]
.ELSE DLXA 1022
DJMS LR5
DJMS LR5
@@ -1382,8 +1460,14 @@ DIS: DHVC ;START OF DISPLAY
DJMS LR5
DJMS LR5
DJMS LR5
IFN ALPHA,[
DLXA 4000
DLYA 3100
]
.ELSE [
DLXA 745
DLYA 1440
]
DJMS REST
DJMS UP
DJMS UP
@@ -1409,7 +1493,8 @@ SCORE: DNOP
DJMS LETTER+61 ;R
DJMS LETTER+21 ;E
DJMS LETTER+115 ;:
DLXA 3640
IFN ALPHA,DLXA 3640
.ELSE DLXA 745
DDYM
DDYM
@@ -1420,10 +1505,17 @@ NUM1: DIXM
DIXM
DIXM
DJMS LETTER+45
DLXA 4000
IFN ALPHA,DLXA 4000
.ELSE DLXA 1000
SET: DNOP
IFN ALPHA,[
DLXA 3400
DLYA 2000
]
.ELSE [
DLXA 670
DLYA 340
]
DJMS REST
DJMS LETTER+70 ;S
DJMS LETTER+21 ;E
@@ -1438,10 +1530,17 @@ SET: DNOP
DJMS LETTER+21 ;E
DJMS LETTER+21 ;E
DJMS LETTER+13 ;D
DLXA 4000
IFN ALPHA,DLXA 4000
.ELSE DLXA 1000
FIRE: DNOP
IFN ALPHA,[
DLXA 3400
DLYA 2000
]
.ELSE [
DLXA 670
DLYA 340
]
DJMS REST
DJMS LETTER+70 ;S
DJMS LETTER+76 ;T
@@ -1459,45 +1558,105 @@ FIRE: DNOP
DJMS LETTER ;A
DJMS LETTER+13 ;D
DJMS LETTER+111 ;Y
IFN ALPHA,[
DLXA 4000
CAR0: DLYA 3100
]
.ELSE [
DLXA 1000
CAR0: DLYA 602
]
DJMS REST
DJMS CAR
IFN ALPHA,[
DLXA 4000
DLYA 2700
]
.ELSE [
DLXA 1000
DLYA 536
]
DJMS REST
DIGIT: DJMS B3
IFN ALPHA,[
CAR1: DLXA 1400
DLYA 3300
]
.ELSE [
CAR1: DLXA 230
DLYA 646
]
DJMS REST
DJMS CAR
IFN ALPHA,[
CAR2: DLXA 1400
DLYA 3500
]
.ELSE [
CAR2: DLXA 230
DLYA 712
]
DJMS REST
DJMS CAR
IFN ALPHA,[
CAR3: DLXA 1400
DLYA 3700
]
.ELSE [
CAR3: DLXA 230
DLYA 756
]
DJMS REST
DJMS CAR
IFN ALPHA,[
CAR4: DLXA 1400
DLYA 4100
]
.ELSE [
CAR4: DLXA 230
DLYA 1022
]
DJMS REST
DJMS CAR
IFN ALPHA,[
CAR5: DLXA 1400
DLYA 4300
]
.ELSE [
CAR5: DLXA 230
DLYA 1066
]
DJMS REST
DJMS CAR
IFN ALPHA,[
CAR6: DLXA 1400
DLYA 4500
]
.ELSE [
CAR6: DLXA 230
DLYA 1132
]
DJMS REST
DJMS CAR
IFN ALPHA,[
DLXA 3700
DLYA 2000
]
.ELSE [
DLXA 756
DLYA 340
]
DJMS REST
CRUNC0: DNOP
IFN ALPHA,[
DLXA 4000 ;CENTER BEAM AND WAIT
DLYA 4000
]
.ELSE [
DLXA 1000
DLYA 1000
]
DHLT
L: ..ZZ=. ;LITERALS GO HERE
LOC <BEGIN+3000>&77000