mirror of
https://github.com/PDP-10/its.git
synced 2026-03-25 09:52:18 +00:00
8094 lines
126 KiB
Plaintext
Executable File
8094 lines
126 KiB
Plaintext
Executable File
IFN UTAPE-TS,[
|
||
TAPAC"==A
|
||
NURBUF"==3
|
||
NUWBUF"==2
|
||
UTCCHN"==2
|
||
TPCHN"=1
|
||
TPCHNA"==100
|
||
NDIR"==2
|
||
BLKSPC"==3
|
||
CLKCHN"==3
|
||
APRINT"=10005
|
||
]
|
||
|
||
IFN TS,[
|
||
TYIC==1
|
||
TYOC==2
|
||
UTYIC==3
|
||
LPTC==4
|
||
UTYOC==5
|
||
UTICOM==6 ;COMMAND FILE READIN FOR CHEOPS
|
||
IFN CHEOPS, CHELCH==7 ;CHANNEL TO HOLD CHEOPS LOCK ON
|
||
IFN CHNET, CHNETI==10 ;CHAOS NET INPUT
|
||
IFN CHNET, CHNETO==11 ;CHAOS NET OUPUT
|
||
|
||
IOT=40_27.
|
||
OPEN=41_27.
|
||
CALL=43_27.
|
||
OPER=42_27.
|
||
CLOSE=OPER 7
|
||
TYINT==1
|
||
PDLOVI==200000
|
||
]
|
||
|
||
IFN DECTS,[
|
||
TYIC==1
|
||
TYOC==1
|
||
UTYIC==3
|
||
LPTC==4
|
||
UTYOC==5
|
||
|
||
RELEASE=71000,,
|
||
INIT=41000,,
|
||
ENTER=77000,,
|
||
OUTBUF=65000,,
|
||
OUTPUT=67000,,
|
||
LOOKUP=76000,,
|
||
INBUF=64000,,
|
||
CALLI=47000,,
|
||
JOBOPC==130
|
||
JOBFF==121
|
||
INPUT=66000,,
|
||
IN=56000,,
|
||
CALL=40000,,
|
||
TIMER=CALLI 22 ;RETURN TIME OF DAY IN JIFFIES
|
||
RUNTIM==CALLI 27 ;RETURN RUNNING TIME IN MILLISEC. AC MUST BE 0
|
||
]
|
||
|
||
IFN DSPLY,[
|
||
IFE TS,[DISCHN==7
|
||
FLGCHN==6
|
||
]
|
||
DISIZE==1740
|
||
]
|
||
IFE DEC,[
|
||
LPTCHN==5
|
||
LPTBSZ==300.
|
||
]
|
||
TTYCHN==4
|
||
APRCHN==3
|
||
|
||
IFN KLNTS, DDT==774000
|
||
.ELSE IFE TS,DDT=34000+IFE DEC,140000
|
||
|
||
|
||
IFE TS+DECTS+KLNTS,[.ZZ=.
|
||
LOC 41
|
||
JSR ERROR
|
||
LOC 40+2*TTYCHN
|
||
JSR TTYBRK
|
||
LOC 40+2*APRCHN
|
||
JSR IAPRBRK
|
||
|
||
LOC .ZZ
|
||
]
|
||
|
||
IFN TS,[.ZZ==.
|
||
LOC 41
|
||
JSR ERROR
|
||
JSR INT
|
||
LOC .ZZ]
|
||
|
||
IFN DECTS,[
|
||
.ZZ=.
|
||
LOC 41
|
||
JSR ERROR
|
||
LOC 124
|
||
JRST RENTER
|
||
LOC 140
|
||
JRST GO
|
||
LOC .ZZ
|
||
]
|
||
|
||
CAT: ;CALCULATE ATTACKS
|
||
;COMPUTE, AS A FUNCTION FO THE CURRENT POSITION, THE DATA BASE
|
||
;USED BY THE PLAUSIBLE MOVE GENERATOR AND STATIC BOARD EVALUATOR
|
||
.CAT: SKIPLE B,ICSW
|
||
POPJ P, ;USE I C CAT
|
||
JUMPL B,CATC ;CHECK MODE
|
||
.CAT1: AOS NCAT ;ENTRY TO IGNORE INCREMENTAL MODE
|
||
PUSH P,I
|
||
PUSH P,R
|
||
PUSH P,T
|
||
IFN HSCOD, PUSHJ P,HSKG
|
||
MOVE T,[-LPINTB,,PINTB]
|
||
MOVEI ZR,1
|
||
|
||
|
||
IRP X,,[BDBLK,BDA1,BDA2,BDA3,BA,WA,ONEB1,ONEB2] ;CLEAR DATA BASE ARRAYS
|
||
IFSN X,BDBLK, SETZM X+2*BW
|
||
IFSE X,BDBLK, CLEARB I,X+2*BW
|
||
MOVE A,[X+2*BW,,X+2*BW+1]
|
||
BLT A,X+2*BW+8*BW-2
|
||
TERMIN
|
||
IRP X,,[PPASED,PPTP,PMOB]
|
||
SETZM X+1
|
||
MOVE A,[X+1,,X+1+1]
|
||
BLT A,X+8+1
|
||
SETZM X+NPCS+1
|
||
MOVE A,[X+NPCS+1,,X+NPCS+1+1]
|
||
BLT A,X+NPCS+1+8
|
||
TERMIN
|
||
MOVE A,[WPNFLS,,WPNFLS+1]
|
||
BLT A,PINT+NPC-1+1
|
||
MOVEI A,PINDT-1
|
||
MOVEM A,PINFS
|
||
CLEARM PCPINS
|
||
CLEARM NWPPP
|
||
CLEARM NBPPP
|
||
MOVE B,[-NPCS,,1]
|
||
MCAT1: MOVE R,PCATV(B)
|
||
MOVEI W,0
|
||
SKIPE A,PIECEL(B)
|
||
PUSHJ P,@PIECE(B)
|
||
MOVEM W,PDV(B)
|
||
AOBJN B,MCAT1
|
||
HRLI B,-NPCS
|
||
MOVEI I,1
|
||
MCAT2: MOVE R,PCATV(B)
|
||
MOVEI W,0
|
||
SKIPE A,PIECEL(B)
|
||
PUSHJ P,@PIECE(B)
|
||
MOVEM W,PDV(B)
|
||
AOBJN B,MCAT2
|
||
PUSHJ P,.CDVLV
|
||
MCAT3: CAMN T,[-LPINTB,,PINTB]
|
||
JRST MCAT3A
|
||
PUSHJ P,MCAT4 ;EXAMINE POSSIBLE PIN
|
||
JRST MCAT3
|
||
MCAT3A:
|
||
MOVE B,[-8,,1]
|
||
MCAT8: SKIPE A,PIECEL(B)
|
||
PUSHJ P,WPBAK
|
||
AOBJN B,MCAT8
|
||
MOVE B,[-8,,NPCS+1]
|
||
MCAT9: SKIPE A,PIECEL(B)
|
||
PUSHJ P,BPBAK
|
||
AOBJN B,MCAT9
|
||
MCATGZ: PUSHJ P,CPMOB ;COMPUTE PAWN MOBILITY
|
||
POP P,T
|
||
POP P,R
|
||
POP P,I
|
||
CPOPJ: POPJ P,
|
||
|
||
|
||
WPBAK: SKIPGE LMGT(B) ;SKIP ON QUEENED (ENTER WITH PIECEL IN A)
|
||
WPBAK1: SKIPE PPTP(B)
|
||
POPJ P, ;ALREADY KNOWN TO BE P DEF BY P
|
||
MOVE T1,PFILE(B) ;ENTER FROM MMICPW
|
||
SKIPN WPNFLS-1(T1)
|
||
SKIPE WPNFLS+1(T1)
|
||
JRST MCAT82
|
||
MOVEI T2,3 ;ISOLATED PAWN
|
||
MCAT80: MOVEM T2,PPTP(B)
|
||
MCAT81: POPJ P,
|
||
|
||
BPBAK: SKIPGE LMGT(B)
|
||
BPBAK1: SKIPE PPTP(B)
|
||
POPJ P,
|
||
MOVE T1,PFILE(B)
|
||
SKIPN BPNFLS-1(T1)
|
||
SKIPE BPNFLS+1(T1)
|
||
JRST MCAT92
|
||
MOVEI T2,3
|
||
MCAT90: MOVEM T2,PPTP(B)
|
||
MCAT91: POPJ P,
|
||
|
||
MCAT82: SETZB C,D
|
||
SKIPG T1,BOARD-1(A)
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT84
|
||
SKIPG T1,BOARD+1(A)
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
MCAT84: TRO D,1 ;WILL BE DEFENDED IF ADVANCED
|
||
SKIPLE T1,BOARD+BW(A)
|
||
CAIGE T1,BPIECE
|
||
XCT WBKPT1(D) ;ADV NOT BLOCKED
|
||
IOR C,D ;ADV BLOCKED
|
||
TRNE C,1
|
||
JRST MCAT81 ;NOT BACK IF BOTH BLOCKED+WOULD BE DEF SINCE HIS PIECE ATTACKED
|
||
MOVE T2,PRANK(B)
|
||
JRST @WPDIS-2(T2) ;C=0 UNLESS P BLOCKED BY OPPOSITION IN WHICH CASE 1.1 MEANS
|
||
;WOULD BE DEF IF COULD BE ADV 3.1==0
|
||
;IF P BLOCKED, C=D, IF NOT 3.1 OF D SET ALL ELSE CLEAR
|
||
|
||
|
||
WPDIS: MCT8.2
|
||
MCAT8B
|
||
MCT8.4
|
||
MCT8.4
|
||
MCT8.4
|
||
MCT8.4
|
||
|
||
MCT8.2: TLZN D,1 ;BLOCKED BY OPPONENT AT RANK 3
|
||
JRST MCAT8B
|
||
SKIPG T1,BOARD+BW-1(A) ;WILL BE DEFENDED IF DOUBLE ADVANCED
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8A
|
||
SKIPLE T1,BOARD+BW+1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
MCAT8A: SKIPG T1,BOARD+2*BW(A)
|
||
JRST .+3
|
||
CAIL T1,BPIECE
|
||
JRST MCAT8B ;BLOCKED BY OPPONENT AT RANK 4
|
||
SKIPLE T1,BOARD+2*BW+1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST .+2
|
||
JRST MCAT8B ;BACKWARD DUE TO EP CAPTURE
|
||
SKIPLE T1,BOARD+2*BW-1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCAT81
|
||
JRST MCAT8B
|
||
|
||
WBKPT1: TLOA D,1
|
||
JRST MCAT81
|
||
|
||
MCAT8B: MOVEI T2,2 ;BACKWARD
|
||
JRST MCAT80
|
||
|
||
MCT8.4: SKIPLE T1,BOARD-2*BW+1(A) ;WILL BE DEFENDED BY ADVANCE OF ADJACENT PAWN
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCT84.
|
||
SKIPLE T1,BOARD-BW+1(A) ;THAT PAWN BLOCKED BY OPPONENT
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT81
|
||
MCT84.: SKIPLE T1,BOARD-2*BW-1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST @WPDIS2-4(T2)
|
||
SKIPLE T1,BOARD-BW-1(A)
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT81
|
||
JRST @WPDIS2-4(T2) ;AT TIME OF DISP IT IS KNOWN THAT P IS
|
||
; NOT PDP, NOT ISO, NOT (WOULD BE DEF
|
||
;BY SINGLE PUSH OF ADJ P AND THAT P NOT BLOCKED)
|
||
|
||
|
||
WPDIS2: MT8.4A ;FOURTH ROW BACKWARD UNLESS ADJ PAWN BLOCKED
|
||
MCT8.5
|
||
MCT8.6
|
||
MCAT8F
|
||
|
||
MT8.4A: SKIPG T1,BOARD-2*BW+1(A)
|
||
JRST MT8.4B
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8F ;PAWN MUST BE BLOCKED SO THIS P IS F
|
||
MT8.4B: SKIPLE T1,BOARD-2*BW-1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
JRST MCAT8F
|
||
|
||
MCT8.5: SKIPLE T1,BOARD-3*BW+1(A) ;WILL BE DEFENDED BY DOUBLE ADVANCE OF ADJACENT PAWN
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCAT8X
|
||
SKIPG T1,BOARD-2*BW+1(A) ;BLOCKED BY OPPONENT AT RANK 3
|
||
JRST .+3
|
||
CAIL T1,BPIECE
|
||
JRST MCAT8X
|
||
SKIPLE T1,BOARD-BW+1(A) ;BLOCKED BY OPPONENT AT RANK 4
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT81 ;NOT BLOCKED OR BLOCKED BY OUR PIECE
|
||
MCAT8X: SKIPLE T1,BOARD-3*BW-1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCAT8Y
|
||
SKIPG T1,BOARD-2*BW-1(A)
|
||
JRST .+3
|
||
CAIL T1,BPIECE
|
||
JRST MCAT8Y
|
||
SKIPLE T1,BOARD-BW-1(A)
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT81
|
||
MCAT8Y: SKIPG T1,BOARD+BW+1(A) ;BACKWARD OR FORWARD
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
SKIPG T1,BOARD+BW-1(A)
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
SKIPG T1,BOARD+2*BW+1(A)
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
SKIPG T1,BOARD+2*BW-1(A)
|
||
JRST MCAT8F
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
MCAT8F: AOS PPTP(B) ;FORWARD
|
||
JRST MCAT81
|
||
|
||
MCT8.6: SKIPG T1,BOARD+BW+1(A) ;BACKWARD OR FORWARD
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
SKIPG T1,BOARD+BW-1(A)
|
||
JRST MCAT8F
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MCAT8B
|
||
JRST MCAT8F
|
||
|
||
MCAT92: SETZB C,D
|
||
SKIPG T1,BOARD-1(A) ;WILL BE DEFENDED IF ADVANCED
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT94
|
||
SKIPG T1,BOARD+1(A)
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
MCAT94: TRO D,1
|
||
SKIPLE T1,BOARD-BW(A) ;ADVANCE BLOCKED
|
||
CAIL T1,BPIECE
|
||
XCT BBKPT1(D)
|
||
IOR C,D
|
||
TRNE C,1
|
||
JRST MCAT91
|
||
MOVE T2,PRANK(B)
|
||
JRST @BPDIS-2(T2)
|
||
|
||
BPDIS: MCT9.4
|
||
MCT9.4
|
||
MCT9.4
|
||
MCT9.4
|
||
MCAT9B
|
||
MCT9.2
|
||
|
||
MCT9.2: TLZN D,1 ;BLOCKED BY OPPONENT AT RANK 3
|
||
JRST MCAT9B
|
||
SKIPG T1,BOARD-BW-1(A) ;WILL BE DEFENDED IF DOUBLE ADVANCED
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9A
|
||
SKIPLE T1,BOARD-BW+1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
MCAT9A: SKIPG T1,BOARD-2*BW(A)
|
||
JRST .+3
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT9B ;BLOCKED BY OPPONENT AT RANK 4
|
||
SKIPLE T1,BOARD-2*BW+1(A) ;BACKWARD DUE TO EP CAPTURE
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST .+2
|
||
JRST MCAT9B
|
||
SKIPLE T1,BOARD-2*BW-1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
JRST MCAT91
|
||
JRST MCAT9B
|
||
|
||
BBKPT1: TLOA D,1
|
||
JRST MCAT91
|
||
|
||
MCAT9B: MOVEI T2,2
|
||
JRST MCAT90
|
||
|
||
MCT9.4: SKIPLE T1,BOARD+2*BW+1(A) ;WILL BE DEFENDED BY ADVANCE OF ADJACENT PAWN
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCT94.
|
||
SKIPLE T1,BOARD+BW+1(A) ;BLOCKED BY OPPONENT
|
||
CAIL T1,BPIECE
|
||
JRST MCAT91
|
||
MCT94.: SKIPLE T1,BOARD+2*BW-1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST BPDIS2-2(T2)
|
||
SKIPLE T1,BOARD+BW-1(A)
|
||
CAIL T1,BPIECE
|
||
JRST MCAT91
|
||
JRST BPDIS2-2(T2)
|
||
|
||
BPDIS2: JRST MCAT9F
|
||
JRST MCT9.6
|
||
JRST MCT9.5
|
||
SKIPG T1,BOARD+2*BW+1(A) ;REACHED BY DISP
|
||
JRST MT9.4A
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9F
|
||
MT9.4A: SKIPLE T1,BOARD+2*BW-1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
JRST MCAT9F
|
||
|
||
MCT9.5: SKIPLE T1,BOARD+3*BW+1(A) ;WILL BE DEFENDED BY DOUBLE ADVANCE OF ADJACENT PAWN
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCAT9X
|
||
SKIPG T1,BOARD+2*BW+1(A) ;BLOCKED BY OPPONENT AT RANK 3
|
||
JRST .+3
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT9X
|
||
SKIPGE T1,BOARD+BW+1(A) ;BLOCKED BY OPPONENT AT RANK 4
|
||
CAIL T1,BPIECE
|
||
JRST MCAT91
|
||
MCAT9X: SKIPLE T1,BOARD+3*BW-1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
JRST MCAT9Y
|
||
SKIPG T1,BOARD+2*BW-1(A)
|
||
JRST .+3
|
||
CAIGE T1,BPIECE
|
||
JRST MCAT9Y
|
||
SKIPLE T1,BOARD+BW-1(A)
|
||
CAIL T1,BPIECE
|
||
JRST MCAT91
|
||
MCAT9Y: SKIPG T1,BOARD-BW+1(A) ;BACKWARD OR FORWARD
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
SKIPG T1,BOARD-BW-1(A)
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
SKIPG T1,BOARD-2*BW+1(A)
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
SKIPG T1,BOARD-2*BW-1(A)
|
||
JRST MCAT9F
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
MCAT9F: AOS PPTP(B)
|
||
JRST MCAT91
|
||
|
||
MCT9.6: SKIPG T1,BOARD-BW+1(A) ;BACKWARD OR FORWARD
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
SKIPG T1,BOARD-BW-1(A)
|
||
JRST MCAT9F
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MCAT9B
|
||
JRST MCAT9F
|
||
|
||
WPPSD: MOVE T1,PFILE(B) ;CHECK IF WP IN B AT SQ A PASSED ALSO AOS WPNFLS + WNPNFL AS APPROPRIATE
|
||
AOS WPNFLS(T1)
|
||
IRP X,,[,+1,-1] ;IS IT PASSED?
|
||
SKIPE C,@PPT+NPCS!X(B)
|
||
CAIGE C,BW-1(A)
|
||
JRST .+5
|
||
MOVE D,PFILE+NPCS!X(B)
|
||
SUB D,T1
|
||
MOVMS D
|
||
SOJLE D,NOTPPW
|
||
TERMIN
|
||
MOVE C,PRANK(B)
|
||
MOVEI D,BW(A)
|
||
SETZM MMPWNF
|
||
MMWPPL: CAIL C,7
|
||
JRST MMPPW
|
||
SKIPG T2,BOARD(D)
|
||
JRST MMWPL2
|
||
SKIPGE SNFBP-PIECE(T2)
|
||
JRST NOTPPW
|
||
SKIPGE LMGSTD-PIECE(T2)
|
||
SETOM MMPWNF
|
||
MMWPL2: IRP X,,[+1,-1]
|
||
SKIPG T2,BOARD!X(D)
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T2)
|
||
JRST NOTPPW
|
||
TERMIN
|
||
ADDI D,BW
|
||
AOJA C,MMWPPL
|
||
|
||
MMPPW: MOVE T2,PRANK(B) ;MARK PASSED PAWN
|
||
SKIPE MMPWNF
|
||
TLO T2,400000
|
||
MOVEM T2,PPASED(B)
|
||
AOSA NWPPP
|
||
NOTPPW: AOS WNPNFL(T1)
|
||
SKIPG T1,BOARD-BW+1(A) ;SEE IF DEFENDED BY PAWN
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T1)
|
||
JRST MMWPDP
|
||
SKIPLE T1,BOARD-BW-1(A)
|
||
SKIPL LMGSTD-PIECE(T1)
|
||
POPJ P,
|
||
MMWPDP: SETOM PPTP(B)
|
||
POPJ P,
|
||
|
||
MMWPWN: PUSHJ P,WPPSD
|
||
RMWP:
|
||
ADDM R,WA+BW+1(A) ;SET UP ATTAKCS
|
||
ADD W,WAV+BW+1(A)
|
||
DPB B,[BDALR+BW+1(A)]
|
||
ADDM R,WA+BW-1(A)
|
||
ADD W,WAV+BW-1(A)
|
||
DPB B,[BDALL+BW-1(A)]
|
||
SKIPL GHSD
|
||
POPJ P, ;NOT BLACK GHOST
|
||
MOVEI T1,BW+1(A)
|
||
CAMN T1,GHLOC
|
||
JRST RMWP1
|
||
MOVEI T1,BW-1(A)
|
||
CAME T1,GHLOC
|
||
POPJ P,
|
||
ADDM R,WA-1(A)
|
||
ADD W,WAV-1(A)
|
||
DPB B,[BDAEPL-1(A)]
|
||
POPJ P,
|
||
|
||
MMWP1: ADDM R,BA+1(A)
|
||
ADD W,BAV+1(A)
|
||
DPB B,[BDAEPR+1(A)]
|
||
POPJ P,
|
||
|
||
RMWP1: ADDM R,WA+1(A)
|
||
ADD W,WAV+1(A)
|
||
DPB B,[BDAEPR+1(A)]
|
||
POPJ P,
|
||
|
||
|
||
BPPSD: MOVE T1,PFILE(B)
|
||
AOS BPNFLS(T1)
|
||
IRP X,,[,+1,-1] ;IS IT PASSED?
|
||
SKIPE C,@PPT-NPCS!X(B)
|
||
CAILE C,1-BW(A)
|
||
JRST .+5
|
||
MOVE D,PFILE-NPCS!X(B)
|
||
SUB D,T1
|
||
MOVMS D
|
||
SOJLE D,NOTPPB
|
||
TERMIN
|
||
MOVE C,PRANK(B)
|
||
MOVEI D,-BW(A)
|
||
SETZM MMPWNF
|
||
MMBPPL: CAIG C,2
|
||
JRST MMPPB
|
||
SKIPG T2,BOARD(D)
|
||
JRST MMBPL2
|
||
SKIPGE LMGSTD-PIECE(T2)
|
||
JRST NOTPPB
|
||
SKIPGE SNFBP-PIECE(T2)
|
||
SETOM MMPWNF
|
||
MMBPL2: IRP X,,[+1,-1]
|
||
SKIPG T2,BOARD!X(D)
|
||
JRST .+3
|
||
SKIPGE LMGSTD-PIECE(T2)
|
||
JRST NOTPPB
|
||
TERMIN
|
||
SUBI D,BW
|
||
SOJA C,MMBPPL
|
||
|
||
MMPPB: MOVE T2,RPRANK(B)
|
||
SKIPE MMPWNF
|
||
TLO T2,400000
|
||
MOVEM T2,PPASED(B)
|
||
AOSA NBPPP
|
||
NOTPPB: AOS BNPNFL(T1)
|
||
SKIPG T1,BOARD+BW+1(A) ;SEE IF DEFENDED BY PAWN
|
||
JRST .+3
|
||
SKIPGE SNFBP-PIECE(T1)
|
||
JRST MMBPDP
|
||
SKIPLE T1,BOARD+BW-1(A)
|
||
SKIPL SNFBP-PIECE(T1)
|
||
POPJ P,
|
||
MMBPDP: SETOM PPTP(B)
|
||
POPJ P,
|
||
|
||
MMBPWN: PUSHJ P,BPPSD
|
||
RMBP: ADDM R,BA-BW+1(A) ;SET UP ATTACKS
|
||
ADD W,BAV-BW+1(A)
|
||
DPB B,[BDAUR-BW+1(A)]
|
||
ADDM R,BA-BW-1(A)
|
||
ADD W,BAV-BW-1(A)
|
||
DPB B,[BDAUL-BW-1(A)]
|
||
SKIPG GHSD
|
||
POPJ P, ;NOT WHITE GHOST
|
||
MOVEI T1,-BW+1(A)
|
||
CAMN T1,GHLOC
|
||
JRST MMWP1
|
||
MOVEI T1,-BW-1(A)
|
||
CAME T1,GHLOC
|
||
POPJ P,
|
||
ADDM R,BA-1(A)
|
||
ADD W,BAV-1(A)
|
||
DPB B,[BDAEPL-1(A)]
|
||
POPJ P,
|
||
|
||
MMRK: MOVSI C,-4
|
||
MMRK1: LDB T2,[PTIDS,,PIECE(B)]
|
||
MOVE A,PIECEL(B)
|
||
MMRK3: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMRK2
|
||
ATA
|
||
DPB B,RDAT(C)
|
||
JUMPE D,MMRK3
|
||
MOVE T1,A
|
||
DPB T2,BDBSQ(C)
|
||
XCT OURGY(I)
|
||
JRST MMRK7
|
||
SKIPGE RFPCS-PIECE(D)
|
||
JRST MMRK6 ;RUNNING INTO OUR OWN ROOK OR QUEEN
|
||
MMRK4: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMRK2
|
||
DPB T1,ONEBSQ(C)
|
||
JUMPE D,MMRK4
|
||
MMRK2: AOBJN C,MMRK1
|
||
POPJ P,
|
||
|
||
MMRK6: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMRK2
|
||
ATA
|
||
DPB T1,ONEBSQ(C)
|
||
JUMPE D,MMRK6
|
||
XCT OURGY(I)
|
||
JRST MMRK2
|
||
SKIPL RFPCS-PIECE(D)
|
||
JRST MMRK2
|
||
MMRK6B: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMRK2
|
||
ATA
|
||
JUMPE D,MMRK6B
|
||
XCT OURGY(I)
|
||
JRST MMRK2
|
||
SKIPL RFPCS-PIECE(D)
|
||
JRST MMRK2
|
||
JRST MMRK6B
|
||
|
||
MMRK7: ADD A,RDT(C) ;CHECK FOR POSSIBLE PINS
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMRK2
|
||
DPB T1,ONEBSQ(C)
|
||
JUMPE D,MMRK7
|
||
XCT OURGY+1(I)
|
||
JRST MMRK2
|
||
PUSH T,A ;RECORD POSSIBLE PIN
|
||
HRLM C,(T)
|
||
DPB B,[PINATP,,(T)]
|
||
DPB T1,[PINOPS,,(T)]
|
||
JRST MMRK2
|
||
|
||
RMWR:
|
||
RMBR: MOVSI C,-4 ;Q=0 REMOVE PIECE 1 REINSERT PIECE
|
||
RMBR1: LDB T2,[PTIDS,,PIECE(B)]
|
||
MOVE A,PIECEL(S)
|
||
RMBR3: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBR2
|
||
ATA
|
||
DPB B,RDAT(C)
|
||
JUMPE D,RMBR3
|
||
RMRE2: MOVE T1,A
|
||
XCT RMBRT2(Q) ;HACK BDBLK
|
||
XCT OURGY(I)
|
||
JRST RMBR7
|
||
SKIPGE RFPCS-PIECE(D)
|
||
JRST RMBR6
|
||
RMBR4: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBR2
|
||
XCT RMBRT3(Q)
|
||
JUMPE D,RMBR4
|
||
RMBR2: AOBJN C,RMBR1
|
||
POPJ P,
|
||
|
||
|
||
RMRE: MOVEI T2,0 ;EXTEND ON RANK OR FILE
|
||
RMRE1: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
POPJ P, ;C KNOWN TO BE -1,,N
|
||
ATA
|
||
DPB B,RDAT(C)
|
||
DPB T2,ONEBSQ(C)
|
||
JUMPE D,RMRE1
|
||
LDB T2,[PTIDS,,PIECE(B)]
|
||
JRST RMRE2
|
||
|
||
RMBR6: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBR2
|
||
ATA
|
||
XCT RMBRT3(Q)
|
||
JUMPE D,RMBR6
|
||
XCT OURGY(I)
|
||
JRST RMBR2
|
||
SKIPL RFPCS-PIECE(D)
|
||
JRST RMBR2
|
||
RMBR6B: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBR2
|
||
ATA
|
||
JUMPE D,RMBR6B
|
||
XCT OURGY(I)
|
||
JRST RMBR2
|
||
SKIPL RFPCS-PIECE(D)
|
||
JRST RMBR2
|
||
JRST RMBR6B
|
||
|
||
RMBRT3: DPB B,ONEBSQ(C)
|
||
DPB T1,ONEBSQ(C)
|
||
|
||
RMBRT2: DPB B,BDBSQ(C)
|
||
DPB T2,BDBSQ(C)
|
||
|
||
RMBR7: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBR2
|
||
XCT RMBRT3(Q)
|
||
JUMPE D,RMBR7
|
||
JRST RMBR2
|
||
|
||
|
||
MMQN: PUSHJ P,MMRK
|
||
MMBS: MOVSI C,-4
|
||
MMBS1: LDB T2,[PTIDS,,PIECE(B)]
|
||
MOVE A,PIECEL(B)
|
||
MMBS3: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMBS2
|
||
ATA
|
||
DPB B,BDAT(C)
|
||
JUMPE D,MMBS3
|
||
MOVE T1,A
|
||
DPB T2,BDBD(C)
|
||
XCT OURGY(I)
|
||
JRST MMBS7
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST MMBS5
|
||
SKIPGE DDPCS-PIECE(D)
|
||
JRST MMBS6
|
||
MMBS4A: ADD A,BDT(C)
|
||
MMBS4B: SKIPGE D,BOARD(A)
|
||
JRST MMBS2
|
||
DPB T1,ONEBBD(C)
|
||
JUMPE D,MMBS4A
|
||
MMBS2: AOBJN C,MMBS1
|
||
POPJ P,
|
||
|
||
MMBS6: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMBS2
|
||
ATA
|
||
DPB T1,ONEBBD(C)
|
||
JUMPE D,MMBS6
|
||
XCT OURGY(I)
|
||
JRST MMBS2
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST MMBS5A
|
||
SKIPL DDPCS-PIECE(D)
|
||
JRST MMBS2
|
||
MMBS6A: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMBS2
|
||
ATA
|
||
JUMPE D,MMBS6A
|
||
XCT OURGY(I)
|
||
JRST MMBS2
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST MMBS5A
|
||
SKIPL DDPCS-PIECE(D)
|
||
JRST MMBS2
|
||
JRST MMBS6A
|
||
|
||
MMBS5A: HRRZ ZR,C
|
||
XCT MMBST1(I)
|
||
JRST MMBS2
|
||
ADD A,BDT(C)
|
||
ATA
|
||
JRST MMBS2
|
||
|
||
|
||
MMBS5: HRRZ ZR,C
|
||
XCT MMBST1(I)
|
||
JRST MMBS4A
|
||
ADD A,BDT(C)
|
||
ATA
|
||
JRST MMBS4B
|
||
|
||
MMBST1: CAIL ZR,2
|
||
CAIGE ZR,2
|
||
|
||
MMBST: CAIL T2,2
|
||
CAIGE T2,2
|
||
|
||
MMBS7:
|
||
MMBS7A: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST MMBS2
|
||
DPB T1,ONEBBD(C)
|
||
JUMPE D,MMBS7A
|
||
XCT OURGY+1(I)
|
||
JRST MMBS2
|
||
PUSH T,A ;PIN BASE SQUARE TO RH
|
||
MOVEI ZR,4(C)
|
||
HRLM ZR,(T) ;PIN DIRECTION TO LH
|
||
DPB B,[PINATP,,(T)]
|
||
DPB T1,[PINOPS,,(T)]
|
||
JRST MMBS2
|
||
|
||
|
||
RMWQ:
|
||
RMBQ: PUSHJ P,RMWR
|
||
RMWB:
|
||
RMBB: MOVSI C,-4
|
||
LDB T2,[PTIDS,,PIECE(B)]
|
||
RMBB1: MOVE A,PIECEL(S)
|
||
RMBB3: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBB2
|
||
ATA
|
||
DPB B,BDAT(C)
|
||
JUMPE D,RMBB3
|
||
RMDE2: MOVE T1,A
|
||
XCT RMDT2(Q)
|
||
XCT OURGY(I)
|
||
JRST RMBB7 ;HIS GUY
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST RMBB5
|
||
SKIPGE DDPCS-PIECE(D)
|
||
JRST RMBB6
|
||
RMBB4A: ADD A,BDT(C)
|
||
RMBB4B: SKIPGE D,BOARD(A)
|
||
JRST RMBB2
|
||
XCT RMDT3(Q)
|
||
JUMPE D,RMBB4A
|
||
RMBB2: AOBJN C,RMBB1
|
||
POPJ P,
|
||
|
||
|
||
RMDE: MOVEI T2,0
|
||
RMDE1: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
POPJ P,
|
||
ATA
|
||
DPB B,BDAT(C)
|
||
DPB T2,ONEBBD(C)
|
||
JUMPE D,RMDE1
|
||
LDB T2,[PTIDS,,PIECE(B)]
|
||
JRST RMDE2
|
||
|
||
RMBB6: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBB2
|
||
ATA
|
||
XCT RMDT3(Q)
|
||
JUMPE D,RMBB6
|
||
XCT OURGY(I)
|
||
JRST RMBB2
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST RMBB5A
|
||
SKIPL DDPCS-PIECE(D)
|
||
JRST RMBB2
|
||
RMBB6A: ADD A,BDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBB2
|
||
ATA
|
||
JUMPE D,RMBB6A
|
||
XCT OURGY(I)
|
||
JRST RMBB2
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST RMBB5A
|
||
SKIPL DDPCS-PIECE(D)
|
||
JRST RMBB2
|
||
JRST RMBB6A
|
||
|
||
|
||
RMBB5A: HRRZ ZR,C
|
||
XCT MMBST1(I)
|
||
JRST RMBB2
|
||
ADD A,BDT(C)
|
||
ATA
|
||
JRST RMBB2
|
||
|
||
RMBB5: HRRZ ZR,C
|
||
XCT MMBST1(I)
|
||
JRST RMBB4A
|
||
ADD A,BDT(C)
|
||
ATA
|
||
JRST RMBB4B
|
||
|
||
RMDT3: DPB B,ONEBBD(C)
|
||
DPB T1,ONEBBD(C)
|
||
|
||
RMDT2: DPB B,BDBD(C)
|
||
DPB T2,BDBD(C)
|
||
|
||
|
||
RMBB7: ADD A,BDT(C) ;REMOVE ONEB
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMBB2
|
||
XCT RMDT3(Q)
|
||
JUMPE D,RMBB7
|
||
JRST RMBB2
|
||
|
||
|
||
IRPS BA,,BA WA,TAG,,RMBN RMWN,BAV,,BAV WAV
|
||
TAG: ADDM R,BA+2*BW+1(A)
|
||
ADD W,BAV+2*BW+1(A)
|
||
DPB B,[BDALR2+2*BW+1(A)]
|
||
ADDM R,BA+2*BW-1(A)
|
||
ADD W,BAV+2*BW-1(A)
|
||
DPB B,[BDALL2+2*BW-1(A)]
|
||
ADDM R,BA+-2*BW+1(A)
|
||
ADD W,BAV+-2*BW+1(A)
|
||
DPB B,[BDAUR2-2*BW+1(A)]
|
||
ADDM R,BA-2*BW-1(A)
|
||
ADD W,BAV-2*BW-1(A)
|
||
DPB B,[BDAUL2-2*BW-1(A)]
|
||
ADDM R,BA+BW+2(A)
|
||
ADD W,BAV+BW+2(A)
|
||
DPB B,[BDALR1+BW+2(A)]
|
||
ADDM R,BA+BW-2(A)
|
||
ADD W,BAV+BW-2(A)
|
||
DPB B,[BDALL1+BW-2(A)]
|
||
ADDM R,BA-BW+2(A)
|
||
ADD W,BAV-BW+2(A)
|
||
DPB B,[BDAUR1-BW+2(A)]
|
||
ADDM R,BA-BW-2(A)
|
||
ADD W,BAV-BW-2(A)
|
||
DPB B,[BDAUL1-BW-2(A)]
|
||
POPJ P,
|
||
|
||
TERMIN
|
||
|
||
IRPS BA,,BA WA,TAG,,RMBK RMWK,BAV,,BAV WAV
|
||
TAG: ADDM R,BA+BW(A)
|
||
ADD W,BAV+BW(A)
|
||
DPB B,[BDAFB+BW(A)]
|
||
ADDM R,BA-BW(A)
|
||
ADD W,BAV-BW(A)
|
||
DPB B,[BDAFT-BW(A)]
|
||
ADDM R,BA+1(A)
|
||
ADD W,BAV+1(A)
|
||
DPB B,[BDARR+1(A)]
|
||
ADDM R,BA-1(A)
|
||
ADD W,BAV-1(A)
|
||
DPB B,[BDARL-1(A)]
|
||
ADDM R,BA+BW+1(A)
|
||
ADD W,BAV+BW+1(A)
|
||
DPB B,[BDALR+BW+1(A)]
|
||
ADDM R,BA+BW-1(A)
|
||
ADD W,BAV+BW-1(A)
|
||
DPB B,[BDALL+BW-1(A)]
|
||
ADDM R,BA-BW+1(A)
|
||
ADD W,BAV-BW+1(A)
|
||
DPB B,[BDAUR-BW+1(A)]
|
||
ADDM R,BA-BW-1(A)
|
||
ADD W,BAV-BW-1(A)
|
||
DPB B,[BDAUL-BW-1(A)]
|
||
POPJ P,
|
||
|
||
TERMIN
|
||
|
||
|
||
|
||
RMPC: LDB I,[430100,,PIECE(S)] ;T SET UP TO RECORD POSSIBLE NEW PINS
|
||
SKIPN A,PIECEL(S) ;REMOVE PIECE IN S
|
||
ERRTTY [ASCIZ /ALREADY GONE--RMPC/]
|
||
IFN HSCOD,[ ;UPDATE HSKEY
|
||
MOVE B,RANDN(A)
|
||
ROT B,@HROT(S)
|
||
XORM B,HSKEY
|
||
] MOVE Q,PFILE(S)
|
||
SKIPL LMGT(S)
|
||
JRST RMPCD
|
||
SKIPE PPASED(S)
|
||
SOS NWPPP(I)
|
||
CLEARM PPASED(S)
|
||
SETOM MMPIVF ;PAWNS INVOLVED
|
||
SETOM MMFL-1(Q)
|
||
SETOM MMFL(Q)
|
||
SETOM MMFL+1(Q)
|
||
RMPCD: MOVE B,PRANK(S)
|
||
XCT RMPPT4(I)
|
||
PUSHJ P,PTPCD ;POSSIBLY ALTERING PAWN STRUCTURE BY STOPPING DOUBLE ADV
|
||
XCT RMPPT1(I)
|
||
JRST RMPCB
|
||
XCT RMPPT2(I) ;PICK UP CONTENTS OF RANK 2 SQUARE
|
||
XCT RMPPT3(I) ;SKIP ON HIS PAWN
|
||
JRST RMPCB
|
||
MOVE D,PPTP-PIECE(T1)
|
||
CAIN T1,2
|
||
JRST RMPCB
|
||
SETOM MMPIVF
|
||
SETOM MMFL(Q) ;MAYBE THIS P ISNT BACKWARD ANY MORE
|
||
SETOM MMFL+1(Q)
|
||
SETOM MMFL-1(Q) ;PAWNS MAY BE MADE FORWARD
|
||
RMPCB: XCT RMPPT2(I)
|
||
XCT RMPPT3(I) ;CHECK IF UNBLOCKING P WHICH CAN DEFEND FORWARD P
|
||
JRST RMPCE
|
||
SKIPLE T1,@RMPTA(I)
|
||
XCT RMPPT3(I)
|
||
JRST RMPCE1
|
||
SKIPN PPTP-PIECE(T1)
|
||
JRST RMPCE1
|
||
SETOM MMPIVF
|
||
SETOM MMFL+1(Q)
|
||
RMPCE1: SKIPLE T1,@RMPTB(I)
|
||
XCT RMPPT3(I)
|
||
JRST RMPCE
|
||
SKIPN PPTP-PIECE(T1)
|
||
JRST RMPCE
|
||
SETOM MMPIVF
|
||
SETOM MMFL-1(Q)
|
||
;DROPS THRU
|
||
|
||
;DROPS IN
|
||
RMPCE: MOVN R,PCATV(S)
|
||
CLEARB B,Q
|
||
PUSHJ P,@RMDTB(S) ;REMOVE BDA WA BA ONEB DUE TO THIS PIECE
|
||
MOVN W,PDV(S)
|
||
IMUL W,PINVF(S)
|
||
ADDM W,@PDVPNR(S)
|
||
MOVE A,PIECEL(S)
|
||
SKIPN T1,BDBLK(A)
|
||
JRST RMPC1 ;NO COMPLICATION DUE TO UNBLOCKING SOMETHING
|
||
JFFO T1,RJF1
|
||
ERRTTY [ASCIZ /LOSE AT RMPCE/]
|
||
|
||
RJF1: LDB B,FUJFT1(T2)
|
||
ANDCM T1,FUJFT2(T2)
|
||
MOVE C,FUJFT3(T2)
|
||
MOVE B,BDAST(B)
|
||
PUSH P,S
|
||
PUSH P,T1
|
||
PUSH P,C
|
||
LDB I,[430100,,PIECE(B)]
|
||
MOVN R,PCATV(B)
|
||
MOVE A,PIECEL(B) ;COMPUTE TOTAL PCATV OF WHATS BEING UNBLOCKED
|
||
RMPC3B: LDB Q,RDAT(C)
|
||
JUMPE Q,RMPC3A
|
||
SKIPGE SLDPC(Q)
|
||
XCT RMOY2(I)
|
||
JRST RMPC3A
|
||
SUB R,PCATV(Q)
|
||
MOVE A,PIECEL(Q)
|
||
JRST RMPC3B
|
||
RMPC3A: MOVEI W,0
|
||
SKIPGE SLDPC(S)
|
||
JRST RMPC5 ;WA BA ENTRIES POSSIBLY ALREADY MADE
|
||
SKIPGE LMGT(S)
|
||
JRST RMPC6 ;WA BA ENTRY POSSIBLY MADE FOR SQUARE IMMEDIATELY BEYOND PAWN
|
||
RMPC6R: MOVE A,PIECEL(S)
|
||
MOVE T1,C
|
||
HRROS C
|
||
TRZ C,4 ;COMPENSATE IF DIAG
|
||
LSH T1,-2
|
||
MOVNS R
|
||
MOVEI Q,1
|
||
PUSHJ P,@RMLCT(T1) ;EXTEND PIECE IN B ALONG LINE IN C STARTING FROM SQ IN A
|
||
ADDM W,PDV(B)
|
||
MOVE ZR,W
|
||
IMUL ZR,PINVF(B)
|
||
ADDM ZR,@PDVPNR(B)
|
||
MOVE A,PIECEL(B)
|
||
POP P,C
|
||
RMPC4A: LDB Q,RDAT(C)
|
||
JUMPE Q,RMPC4B
|
||
SKIPGE SLDPC(Q)
|
||
XCT RMOY2(I)
|
||
JRST RMPC4B
|
||
ADDM W,PDV(Q)
|
||
MOVE ZR,W
|
||
IMUL ZR,PINVF(Q)
|
||
ADDM ZR,@PDVPNR(Q)
|
||
MOVE A,PIECEL(Q)
|
||
JRST RMPC4A
|
||
RMPC4B: POP P,T1
|
||
POP P,S
|
||
JFFO T1,RJF1
|
||
JRST RMPC1A
|
||
|
||
|
||
|
||
RMPO2: TLNE D,777000
|
||
JSP Q,RMPO3
|
||
RMPBS: TLNE D,777
|
||
JSP Q,RMPO3
|
||
TRNE D,777000
|
||
JSP Q,RMPO3
|
||
TRNE D,777
|
||
JSP Q,RMPO3
|
||
JRST (R)
|
||
|
||
RMPO3: LDB T1,MMP3T1-RMPBS(Q)
|
||
MOVE C,@RMPT1-RMPBS1(R)
|
||
RMPO3A: ADD A,RDT(C)
|
||
SKIPGE T2,BOARD(A)
|
||
JRST RMPO3R
|
||
DPB T1,ONEBSQ(C)
|
||
JUMPE T2,RMPO3A
|
||
RMPO3R: MOVE A,PIECEL(S)
|
||
JRST (Q)
|
||
|
||
RMPT1: ,MMP3T3-RMPBS(Q)
|
||
0
|
||
,MMP3T4-RMPBS(Q)
|
||
|
||
|
||
RMLCT: RMRE ;EXTEND ON RANK OR FILE
|
||
RMDE ;EXTEND ON DIAG
|
||
|
||
RMPC1A: MOVE A,PIECEL(S)
|
||
CLEARM BDBLK(A)
|
||
RMPC1: SKIPE D,ONEB1(A)
|
||
JSP R,RMPO2
|
||
RMPBS1: SKIPE D,ONEB2(A)
|
||
JSP R,RMPO2
|
||
POPJ P,
|
||
|
||
RMPC6: CAIL C,4 ;NOT DIA
|
||
XCT RMDTT(I) ;SKIP ON DIAG TOWARD OPPOSITION
|
||
JRST RMPC6R
|
||
XCT RMOY3(I)
|
||
JRST RMPC6R ;NOT OUR SIDE
|
||
MOVE A,PIECEL(S)
|
||
ADD A,RDT(C)
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
JRST RMPC6R
|
||
|
||
|
||
RMPC5: SKIPGE @RMP5T(C)
|
||
XCT RMOY3(I)
|
||
JRST RMPC6R ;NOT SLIDING ALONG THIS LINE
|
||
MOVE A,PIECEL(S)
|
||
RMPC5A: ADD A,RDT(C)
|
||
SKIPGE D,BOARD(A)
|
||
JRST RMPC6R
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
JUMPE D,RMPC5A
|
||
XCT OURGY(I)
|
||
JRST RMPC6R
|
||
SKIPGE @RMP5T1(C)
|
||
JRST RMPC5A ;OUR PIECE ALSO SLIDING ALONG THIS LINE
|
||
CAIGE C,4
|
||
JRST RMPC6R
|
||
SKIPGE LMGT-PIECE(D)
|
||
XCT RMDTT(I)
|
||
JRST RMPC6R
|
||
ADD A,RDT(C)
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
JRST RMPC6R
|
||
|
||
|
||
PTPC: SKIPN A,PIECEL(S) ;PUT ON PIECE IN S
|
||
ERRTTY [ASCIZ /PIECEL 0-- PTPC/]
|
||
LDB I,[430100,,PIECE(S)]
|
||
IFN HSCOD,[ ;UPDATE HSKEY
|
||
MOVE B,RANDN(A)
|
||
ROT B,@HROT(S)
|
||
XORM B,HSKEY
|
||
] MOVE Q,PFILE(S)
|
||
SKIPL LMGT(S)
|
||
JRST PTPCB
|
||
SETOM MMFL-1(Q)
|
||
SETOM MMFL(Q)
|
||
SETOM MMFL+1(Q)
|
||
SETOM MMPIVF
|
||
PTPCB: MOVE B,PRANK(S)
|
||
XCT RMPPT4(I)
|
||
PUSHJ P,PTPCD
|
||
; XCT RMPPT1(I)
|
||
; JRST PTPCA
|
||
XCT RMPPT2(I)
|
||
XCT RMPPT3(I)
|
||
JRST PTPCA
|
||
SETOM MMPIVF
|
||
SETOM MMFL(Q) ;MAYBE P IS BACKWARD NOW
|
||
SETOM MMFL+1(Q) ;OTHER PAWNS MAY BECOME FORWARD
|
||
SETOM MMFL-1(Q)
|
||
PTPCA: SKIPE T1,ONEB1(A)
|
||
JSP Q,PTPO2
|
||
PTPBS1: SKIPE T1,ONEB2(A)
|
||
JSP Q,PTPO2
|
||
SKIPE T1,BDA1(A)
|
||
JSP C,PTPC1
|
||
PTPBS3: SKIPE T1,BDA2(A)
|
||
JSP C,PTPC1A
|
||
MOVE R,PCATV(S)
|
||
MOVEI Q,1
|
||
MOVE B,S
|
||
LDB I,[430100,,PIECE(S)]
|
||
MOVEI W,0
|
||
PUSHJ P,@RMDTB(S)
|
||
MOVEM W,PDV(B)
|
||
IMUL W,PINVF(B)
|
||
ADDM W,@PDVPNR(B)
|
||
POPJ P,
|
||
|
||
|
||
PTPC1A: AND T1,[777700,,] ;ONLY SLIDING DIRECTIONS
|
||
PTPC1:
|
||
PTPC1D: JFFO T1,FJPTP1
|
||
JRST (C)
|
||
|
||
|
||
FJPTP1: LDB J,FJTB1(T2)
|
||
ANDCM T1,FJTB2(T2)
|
||
PTPC1B: SKIPL SLDPC(J)
|
||
JRST PTPC1D
|
||
MOVE T2,@FJTB3-PTPBS3(C)
|
||
LDB I,[430100,,PIECE(J)]
|
||
|
||
PTP2: MOVN R,PCATV(J)
|
||
MOVE A,PIECEL(J) ;COMPUTE TOTAL PCATV OF WHATS BEING CUT OFF
|
||
PTP2E: LDB Q,RDAT(T2)
|
||
JUMPE Q,PTP2D
|
||
SKIPGE SLDPC(Q)
|
||
XCT RMOY2(I)
|
||
JRST PTP2D
|
||
SUB R,PCATV(Q)
|
||
MOVE A,PIECEL(Q)
|
||
JRST PTP2E
|
||
PTP2D: CLEARB Q,TT ;DECIDE WHETHER TO LEAVE WA-BA ALONE Q=0
|
||
SKIPGE @RMP5T(T2) ;OR SUB OUT Q=1 SKIP ON PIECE NOT SLIDING IN THAT DIRECTION
|
||
XCT RMOY1(I)
|
||
MOVEI Q,1
|
||
MOVE A,PIECEL(S)
|
||
MOVE B,A ;SAVE SQUARE BLOCKED AT
|
||
LDB D,[PTIDS,,PIECE(J)]
|
||
DPB D,BDBSQ(T2) ;NOW BLOCKED HERE
|
||
MOVEI W,0
|
||
PTP2A: ADD A,RDT(T2)
|
||
SKIPGE D,BOARD(A)
|
||
JRST PTP3
|
||
XCT PTP2T(Q)
|
||
XCT ATS(I)
|
||
PTP2A1: DPB TT,RDAT(T2)
|
||
DPB B,ONEBSQ(T2) ;NOW THRU ONE BLOCKER
|
||
JUMPE D,PTP2A
|
||
DPB TT,BDBSQ(T2) ;NO LONGER BLOCKED HERE
|
||
JUMPE Q,PTPO1
|
||
PTP2C: XCT OURGY(I)
|
||
JRST PTPO1 ;WA BA OK BUT REMOVE OLD ONEB
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST PTP2C1
|
||
SKIPL @RMP5T1(T2) ;SLIDING PIECE IN RIGHT DIRECTION?
|
||
JRST PTPO1
|
||
PTP3B: ADD A,RDT(T2) ;REMOVE OLD ONEB + ALSO SUB OUT
|
||
SKIPGE D,BOARD(A)
|
||
JRST PTP3
|
||
XCT ATS(I)
|
||
XCT RMINS(I)
|
||
DPB TT,ONEBSQ(T2) ;NOW 2 AWAY SO CLEAR OUT
|
||
JUMPE D,PTP3B
|
||
PTPC3D: XCT OURGY(I) ;JUST SUB OUT
|
||
JRST PTP3
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST PTP2C2
|
||
SKIPL @RMP5T1(T2)
|
||
JRST PTP3
|
||
PTPC3C: ADD A,RDT(T2)
|
||
SKIPGE D,BOARD(A)
|
||
JRST PTP3
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
JUMPE D,PTPC3C
|
||
JRST PTPC3D
|
||
|
||
|
||
PTP2C2: HRRZ D,T2
|
||
TRNE T2,4
|
||
XCT RMDTT1(I)
|
||
JRST PTP3
|
||
ADD A,RDT(T2)
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
SUB A,RDT(T2)
|
||
PTP3: SKIPGE LMGT(S)
|
||
TRNN T2,4 ;SKIP ON DIAGS
|
||
JRST PTPVL
|
||
HRRZ D,T2 ;PIECE MUST BE DDPCS BECAUSE OF DIRECTION
|
||
XCT RMOY3+1(I)
|
||
XCT RMDTT1(I)
|
||
JRST PTPVL
|
||
MOVE A,PIECEL(S)
|
||
ADD A,RDT(T2)
|
||
MOVNS R
|
||
XCT RMINS(I) ;STILL ATTACKING HERE THRU PAWN
|
||
XCT AT(I)
|
||
MOVNS R
|
||
PTPVL: ADDM W,PDV(J)
|
||
MOVE ZR,W
|
||
IMUL ZR,PINVF(J)
|
||
ADDM ZR,@PDVPNR(J)
|
||
MOVE A,PIECEL(J)
|
||
PTPVL1: LDB Q,RDAT(T2)
|
||
JUMPE Q,PTPVL2
|
||
SKIPGE SLDPC(Q)
|
||
XCT RMOY2(I)
|
||
JRST PTPVL2
|
||
ADDM W,PDV(Q)
|
||
MOVE ZR,W
|
||
IMUL ZR,PINVF(Q)
|
||
ADDM ZR,@PDVPNR(Q)
|
||
MOVE A,PIECEL(Q)
|
||
JRST PTPVL1
|
||
|
||
PTPVL2: MOVE A,PIECEL(S)
|
||
JRST PTPC1D
|
||
|
||
PTP2T: JRST PTP2A1
|
||
XCT RMINS(I)
|
||
|
||
|
||
PTP2C1: HRRZ D,T2
|
||
TRNE T2,4
|
||
XCT RMDTT1(I)
|
||
JRST PTPO1
|
||
ADD A,RDT(T2)
|
||
XCT RMINS(I)
|
||
XCT ATS(I)
|
||
JRST PTPO1A
|
||
|
||
|
||
PTPO1: ADD A,RDT(T2) ;JUST CLEAR ONEB
|
||
PTPO1A: SKIPGE D,BOARD(A)
|
||
JRST PTP3
|
||
DPB TT,ONEBSQ(T2)
|
||
JUMPE D,PTPO1
|
||
JRST PTP3
|
||
|
||
PTPO2: MOVEI B,0
|
||
TLNE T1,777000
|
||
JSP J,PTPO2A
|
||
PTPBS2: TLNE T1,777
|
||
JSP J,PTPO2A
|
||
TRNE T1,777000
|
||
JSP J,PTPO2A
|
||
TRNE T1,777
|
||
JSP J,PTPO2A
|
||
JRST (Q)
|
||
|
||
PTPO2A: MOVE T2,@PTPTB1-PTPBS1(Q)
|
||
PTPO2C: ADD A,RDT(T2)
|
||
SKIPGE D,BOARD(A)
|
||
JRST PTPO2R
|
||
DPB B,ONEBSQ(T2)
|
||
JUMPE D,PTPO2C
|
||
PTPO2R: MOVE A,PIECEL(S)
|
||
JRST (J)
|
||
|
||
PTPTB1: ,MMP3T3-PTPBS2(J)
|
||
0
|
||
,MMP3T4-PTPBS2(J)
|
||
|
||
PTPCD: XCT RMPPT5(I) ;MOVING TO OUR FIFTH RANK, STOPPING HIS DOUBLE ADV?
|
||
XCT RMPPT3(I)
|
||
POPJ P, ;RANK 2 NOT OCC OR NOT HIS P
|
||
LDB T2,[BFILE,,BPREL(A)]
|
||
SKIPLE T1,@RMPPT7(I) ;SKIP ON HIS DIAG OPP 3RD RANK SQ EMPTY
|
||
XCT RMPPT3(I) ;SKIP ON HIS P THERE
|
||
JRST PTPCD1
|
||
PTPCD2: SETOM MMFL(T2) ;HIS 2ND RANK P MAY BE BACKWARD NOW
|
||
SETOM MMPIVF
|
||
PTPCD3: SKIPLE T1,@RMPTA(I)
|
||
XCT RMPPT3(I)
|
||
JRST PTPCD4
|
||
SETOM MMPIVF ;MAKING HIS P FORWARD?
|
||
SETOM MMFL+1(T2)
|
||
PTPCD4: SKIPLE T1,@RMPTB(I)
|
||
XCT RMPPT3(I)
|
||
POPJ P,
|
||
SETOM MMPIVF
|
||
SETOM MMFL-1(T2)
|
||
POPJ P,
|
||
|
||
PTPCD1: SKIPLE T1,@RMPPT8(I)
|
||
XCT RMPPT3(I)
|
||
JRST PTPCD3
|
||
JRST PTPCD2
|
||
|
||
|
||
CATC: MMSAVAC
|
||
PUSHJ P,ICSTO
|
||
PUSHJ P,ATEV
|
||
PUSHJ P,.CAT1
|
||
MOVEI B,TYO
|
||
PUSHJ P,ICCMP
|
||
SKIPGE ICERRF
|
||
JRST CATC1
|
||
CATC2: MMRSAC
|
||
POPJ P,
|
||
|
||
CATC1: IFN DSPLY, PUSHJ P,DISUP
|
||
PUSHJ P,TYI
|
||
JRST CATC2
|
||
|
||
CATCSA: BLOCK 17
|
||
MMIC1: MMSAVAC
|
||
LDB S,[MPC,,LMV]
|
||
PUSHJ P,RMPC ;REMOVE PIECE MOVING
|
||
MMICR: MMRSAC
|
||
POPJ P,
|
||
|
||
|
||
MMIC3: MMSAVAC
|
||
MOVE A,PIECEL(B)
|
||
PUSH P,BOARD(A)
|
||
CLEARM BOARD(A)
|
||
PUSH P,A ;AVOID POSSIBLE INTERFERENCE FROM PIECE MAKING CAPTURE
|
||
LDB S,[MPTK,,LMV]
|
||
PUSHJ P,RMPC
|
||
MMICR1: POP P,A
|
||
POP P,BOARD(A)
|
||
JRST MMICR
|
||
|
||
MMIC7: MMSAVAC
|
||
LDB S,[MPC,,LMV]
|
||
PUSHJ P,PTPC
|
||
JRST MMICR
|
||
|
||
MMIC2: MMSAVAC
|
||
CLEARM PINT+1
|
||
MOVE A,[PINT+1,,PINT+1+1]
|
||
BLT A,PINT+NPC+1-1
|
||
MOVEI A,PINDT-1
|
||
MOVEM A,PINFS
|
||
CLEARM PCPINS
|
||
|
||
SETZM PMOB+1
|
||
MOVE A,[PMOB+1,,PMOB+1+1]
|
||
BLT A,PMOB+8+1
|
||
SETZM PMOB+NPCS+1
|
||
MOVE A,[PMOB+NPCS+1,,PMOB+NPCS+1+1]
|
||
BLT A,PMOB+NPCS+1+8
|
||
|
||
MOVE T,[-LPINTB,,PINTB]
|
||
MOVE B,[-NPC,,1]
|
||
MMP1: SKIPN A,PIECEL(B)
|
||
JRST MMP2
|
||
SKIPE D,ONEB1(A)
|
||
JSP J,MMP3
|
||
MMPBS: SKIPE D,ONEB2(A)
|
||
JSP J,MMP3
|
||
MMP2: AOBJN B,MMP1
|
||
MMP2B: CAMN T,[-LPINTB,,PINTB]
|
||
JRST MMP2A
|
||
PUSHJ P,MCAT4
|
||
JRST MMP2B
|
||
|
||
MMP2A: SKIPL MMPIVF ;SKIP IF PAWNS INVOLVED
|
||
JRST MMC2X1
|
||
MOVSI B,-8
|
||
MMIC2H: SKIPL MMFL+1(B)
|
||
JRST MMIC2G
|
||
CLEARM WPNFLS+1(B)
|
||
CLEARM BPNFLS+1(B)
|
||
CLEARM WNPNFL+1(B)
|
||
CLEARM BNPNFL+1(B)
|
||
MMIC2G: AOBJN B,MMIC2H
|
||
|
||
PUSHJ P,MMICP
|
||
MMC2X1: PUSHJ P,CPMOB ;COMPUTE PAWN MOBILITY. ALWAYS DO THIS EVEN IF PAWNS NOT
|
||
; INVOLVED IN MOVE.
|
||
JRST MMICR
|
||
|
||
|
||
CPMOB: MOVE B,[-8,,1] ;COMPUTE PAWN MOBILITY
|
||
CPMOB1: SKIPE A,PIECEL(B)
|
||
SKIPL LMGT(B)
|
||
JRST CPMOB2
|
||
SKIPN D,BOARD+BW(A)
|
||
JRST CPMOB2 ;NOTHING IN FRONT, LEAVE 0
|
||
MOVEI ZR,1
|
||
SKIPGE LMGT-PIECE(D)
|
||
AOS ZR ;BLOCKED BY PAWN
|
||
SKIPGE (D)
|
||
ADDI ZR,2 ;HIS
|
||
MOVEM ZR,PMOB(B)
|
||
CPMOB2: AOBJN B,CPMOB1
|
||
MOVE B,[-8,,NPCS+1]
|
||
CPMOB3: SKIPE A,PIECEL(B)
|
||
SKIPL LMGT(B)
|
||
JRST CPMOB4
|
||
SKIPN D,BOARD-BW(A)
|
||
JRST CPMOB4
|
||
MOVEI ZR,1
|
||
SKIPGE LMGT-PIECE(D)
|
||
AOS ZR
|
||
SKIPL (D)
|
||
ADDI ZR,2 ;HIS
|
||
MOVEM ZR,PMOB(B)
|
||
CPMOB4: AOBJN B,CPMOB3
|
||
POPJ P,
|
||
|
||
MMICP: MOVE B,[-8,,1]
|
||
MMIC2D: SKIPE A,PIECEL(B)
|
||
SKIPL LMGT(B)
|
||
JRST MMIC2C
|
||
MOVE C,PFILE(B)
|
||
SKIPL MMFL(C)
|
||
JRST MMIC2C ;THIS P NOT AFFECTED
|
||
SKIPE PPASED(B)
|
||
SOS NWPPP
|
||
CLEARM PPASED(B)
|
||
CLEARM PPTP(B)
|
||
PUSHJ P,WPPSD
|
||
HRLM B,(P)
|
||
PUSH P,[MMICPW]
|
||
MMIC2C: AOBJN B,MMIC2D
|
||
|
||
MOVE B,[-8,,NPCS+1]
|
||
MMIC2E: SKIPE A,PIECEL(B)
|
||
SKIPL LMGT(B)
|
||
JRST MMIC2F
|
||
MOVE C,PFILE(B)
|
||
SKIPL MMFL(C)
|
||
JRST MMIC2F
|
||
SKIPE PPASED(B)
|
||
SOS NBPPP
|
||
CLEARM PPASED(B)
|
||
CLEARM PPTP(B)
|
||
PUSHJ P,BPPSD
|
||
HRLM B,(P)
|
||
PUSH P,[MMICPB]
|
||
MMIC2F: AOBJN B,MMIC2E
|
||
POPJ P,
|
||
|
||
MMICPW: HLRZ B,(P)
|
||
MOVE A,PIECEL(B)
|
||
JRST WPBAK1
|
||
|
||
MMICPB: HLRZ B,(P)
|
||
MOVE A,PIECEL(B)
|
||
JRST BPBAK1
|
||
|
||
MMP3: TLNE D,777000 ;MMP WD IN D
|
||
JSP TT,MMP3D
|
||
MMP3BS: TLNE D,777
|
||
JSP TT,MMP3D
|
||
TRNE D,777000
|
||
JSP TT,MMP3D
|
||
TRNE D,777
|
||
JSP TT,MMP3D
|
||
JRST (J)
|
||
|
||
MMP3D: LDB C,MMP3T1-MMP3BS(TT)
|
||
MOVE T2,@MMP3T2-MMPBS(J)
|
||
MOVE ZR,@BOARD(C)
|
||
XOR ZR,PIECE(B)
|
||
JUMPL ZR,(TT)
|
||
LDB Q,RDATS(T2)
|
||
MOVE ZR,PIECE(Q)
|
||
XOR ZR,PIECE(B)
|
||
JUMPGE ZR,(TT)
|
||
PUSH T,A
|
||
HRLM T2,(T)
|
||
DPB Q,[PINATP,,(T)]
|
||
DPB C,[PINOPS,,(T)]
|
||
JRST (TT)
|
||
|
||
MMP3T1: 331100,,D
|
||
MMP3T3: 0
|
||
221100,,D
|
||
1
|
||
111100,,D
|
||
2
|
||
1100,,D
|
||
3
|
||
|
||
MMP3T4: 4
|
||
MMP3T2: ,MMP3T3-MMP3BS(TT)
|
||
5
|
||
,MMP3T4-MMP3BS(TT)
|
||
6
|
||
0
|
||
7
|
||
|
||
MMIC5Q: MOVEI S,WQR-PIECE(T)
|
||
JRST MMIC5A
|
||
|
||
MMIC5: MOVEI S,WKR-PIECE(T)
|
||
MMIC5A: MMSAVAC
|
||
PUSHJ P,RMPC
|
||
MOVE A,PIECEL(S)
|
||
PUSH P,BOARD(A)
|
||
CLEARM BOARD(A)
|
||
PUSH P,A ;AVOID POSSIBLE INTERFERENCE BY ROOK IN K REMOVAL
|
||
MOVE I,CATCSA+I
|
||
MOVE S,KINGT(I)
|
||
PUSHJ P,RMPC
|
||
JRST MMICR1
|
||
|
||
KINGT: WKING-PIECE
|
||
BKING-PIECE
|
||
|
||
MMIC6Q: MOVEI S,WQR-PIECE(T)
|
||
JRST MMIC6A
|
||
|
||
|
||
MMIC6: MOVEI S,WKR-PIECE(T)
|
||
MMIC6A: MMSAVAC
|
||
MOVE A,@OKINGT(I)
|
||
PUSH P,BOARD(A)
|
||
CLEARM BOARD(A)
|
||
PUSH P,A ;AVOID POSSIBLE INTERFERENCE BY K IN ROOK PLACEMENT
|
||
PUSHJ P,PTPC
|
||
POP P,A
|
||
POP P,BOARD(A)
|
||
MOVE I,CATCSA+I
|
||
MOVE S,KINGT(I)
|
||
PUSHJ P,PTPC
|
||
JRST MMICR
|
||
|
||
MMIC8: MMSAVAC
|
||
LDB S,[MPTK,,LMV]
|
||
PUSHJ P,PTPC
|
||
JRST MMICR
|
||
|
||
MMIC5B: CAIE T2,2
|
||
JRST MMIC5
|
||
JRST MMIC5Q
|
||
|
||
MMIC6B: CAIE T2,2
|
||
JRST MMIC6
|
||
JRST MMIC6Q
|
||
|
||
GERR: MOVE P,RMERR1
|
||
PUSHJ P,QMTYO
|
||
JRST CRR
|
||
|
||
GSYL: CLEARB B,SQN
|
||
MOVE J,[440600,,B]
|
||
CLEARM GSYLNF
|
||
GSYL4: PUSHJ P,RCHA
|
||
CAIL A,"a
|
||
CAILE A,"z
|
||
JRST .+2
|
||
SUBI A,40
|
||
SETOM TERMF
|
||
CAIN A,40
|
||
CLEARM TERMF
|
||
CAIN A,177
|
||
JRST GERR
|
||
MOVEM A,LCHAR
|
||
CAIL A,"1
|
||
CAILE A,"9
|
||
JRST GSYL1
|
||
JUMPE B,GSYLN
|
||
SUBI A,"0-1 ;POSSIBLE RANK NUMBER
|
||
HRROI C,-11.(A)
|
||
SKIPE SIDE
|
||
MOVN A,C
|
||
IMULI A,BW
|
||
MOVEM A,SQN
|
||
GSYL5: MOVSI C,-NSYMS
|
||
CAMN B,SYMT(C)
|
||
JRST GSYL6
|
||
AOBJN C,.-2
|
||
JRST GERR
|
||
|
||
|
||
GSYL1: CAIN A,"X
|
||
JRST GSYL1A ;X IS THE SAME AS * SO TAKES CAN WIN.
|
||
CAIL A,"A
|
||
CAILE A,"Z
|
||
JRST GSYL3
|
||
SUBI A,40
|
||
TLNE J,770000
|
||
IDPB A,J
|
||
JRST GSYL4
|
||
|
||
GSYL3: ;HERE ON TERMINATOR
|
||
CAIN A,40
|
||
JRST [ SKIPE RSAWMN
|
||
MOVEI A,11 ;IF SAW MOVE NUMBER, READING GAME AND SPACE=TAB.
|
||
JRST .+1]
|
||
IFN BOOK,[
|
||
SKIPL BOOKF1
|
||
JRST GSYL3A
|
||
CAIN A,40
|
||
MOVEI A,15 ;SPACE = CR IF READING BOOK
|
||
GSYL3A:
|
||
] CAIE A,"-
|
||
CAIN A,40
|
||
JRST GSYL5A
|
||
CAIE A,"(
|
||
CAIN A,")
|
||
JRST GSYL5A
|
||
CAIN A,"/
|
||
JRST GSYL5A
|
||
CAIE A,"=
|
||
CAIN A,"?
|
||
JRST GSYLEQ
|
||
CAIE A,"*
|
||
JRST GSYL7
|
||
GSYL1A: SETOM TAKES
|
||
SETOM TAKES1
|
||
SKIPN B
|
||
SETOM TAKES2
|
||
|
||
GSYL5A: JUMPN B,GSYL5
|
||
JRST GSYL4
|
||
|
||
GSYLEQ: AOS EQSGNF
|
||
JUMPN B,GSYL5
|
||
POPJ P,
|
||
|
||
GSYL7: CAIL A,11
|
||
CAILE A,15
|
||
JRST GERR
|
||
SETOM GME
|
||
CAIN A,15
|
||
CLEARM RSAWMN ;RESET SAW MOVE NUMBER THIS LINE
|
||
JUMPE B,CPOPJ
|
||
JRST GSYL5
|
||
|
||
|
||
|
||
|
||
GSYLN: MOVEI C,-"0(A)
|
||
SETOM GSYLNF
|
||
GSYLN1: CLEARM GSYLMF
|
||
GSYLN3: PUSHJ P,RCHA
|
||
CAIN A,177
|
||
JRST GERR
|
||
CAIN A,"-
|
||
JRST GSYLN5
|
||
CAIL A,"0
|
||
CAILE A,"9
|
||
JRST GSYLN4
|
||
IMULI C,10.
|
||
ADDI C,-"0(A)
|
||
JRST GSYLN3
|
||
|
||
GSYLN5: SETOM GSYLMF
|
||
JRST GSYLN3
|
||
|
||
GSYLN4: CAIL A,11
|
||
CAILE A,15
|
||
SKIPA
|
||
SETOM GME
|
||
SKIPE GSYLMF
|
||
MOVNS C
|
||
POPJ P,
|
||
|
||
|
||
GSYL6A: ;FOUND SYMBOL IN SYMBOL TABLE. PSEUDO DISPATCH OR PARAMETER HACKS
|
||
IFN BOOK,[CAIL A,BKSMS-SYMT
|
||
JRST GSYL6B]
|
||
|
||
SKIPG B,SQTB(A)
|
||
JRST GSYL6C
|
||
GSYL6E: MOVEI B,0
|
||
PUSHJ P,@SQTB(A)
|
||
SKIPGE UREADF
|
||
JRST MNLP2R
|
||
GSYL6F: PUSHJ P,LATYO
|
||
PUSHJ P,CRR
|
||
JRST MNLP2R
|
||
|
||
GSYL6C: SKIPN EQSGNF
|
||
JRST GSYL6D
|
||
TLNN B,200000 ;OUTPUT PARAMETER VALUE
|
||
SKIPA A,-1(B)
|
||
MOVE A,(B)
|
||
MOVEI B,TYO
|
||
PUSHJ P,DPT
|
||
JRST GSYL6F
|
||
|
||
GSYL6D: TLNN B,200000
|
||
JRST GSYL6E
|
||
PUSHJ P,GETNUM ;INPUT PARAMETER VALUE
|
||
MOVEM C,(B)
|
||
JRST GSYL6F
|
||
|
||
|
||
IFN BOOK,[
|
||
GSYL6B: SKIPN BOOKF1
|
||
JRST GERR ;NOT READING BOOK
|
||
JRST @SQTB(A)
|
||
]
|
||
|
||
|
||
GSYL6: HRRZ A,C
|
||
CAIL A,SYMPS-SYMT
|
||
JRST GSYL6A ;PSEUDO
|
||
MOVE A,SQN
|
||
HRLS A
|
||
ADD A,SQTB(C)
|
||
MOVE T1,SIDE
|
||
SKIPGE TAKES2
|
||
XORI T1,NPCS
|
||
SKIPE T1
|
||
ADDI C,PTBL ;BLACK PIECES
|
||
SKIPN SQN
|
||
MOVE A,PTB(C)
|
||
TLNE A,377777
|
||
JUMPL A,GERR
|
||
TRNE A,400000
|
||
JRST GSYP1 ;PAWN HACK
|
||
GSYP3: AOSN TAKES1
|
||
SETOM TAKES2
|
||
POPJ P,
|
||
|
||
|
||
GSYP1: SKIPE SQN
|
||
JRST GSYP3
|
||
LDB T1,[400,,A]
|
||
LDB T2,[40400,,A]
|
||
MOVEI A,0
|
||
MOVSI C,200000
|
||
MOVE S,SIDE
|
||
SKIPGE TAKES2
|
||
XORI S,NPCS
|
||
|
||
GSYP2: SKIPE Q,PIECEL+1(S)
|
||
SKIPL LMGT+1(S)
|
||
JRST GSYP4
|
||
MOVE Q,PFILE+1(S)
|
||
CAME Q,T1
|
||
CAMN Q,T2
|
||
IOR A,C
|
||
GSYP4: LSH C,-1
|
||
TLNN C,400
|
||
AOJA S,GSYP2
|
||
JRST GSYP3
|
||
|
||
RMNI: LSH C,1
|
||
SUBI C,2
|
||
CAME C,PLYN
|
||
PTTY [ASCII /MOVE NUMBER DIFFERS!/]
|
||
SETOM RSAWMN ;SAW MOVE NUMBER (MUST BE READING GAME)
|
||
JRST RMOVE3
|
||
|
||
RMOVE: LDB A,[100,,PLYN]
|
||
IMULI A,NPCS
|
||
MOVEM A,SIDE ;0=>WHITE NPCS=>BLACK
|
||
PUSHJ P,CAT
|
||
MOVEM P,RMERR1
|
||
JRST RMOVE3
|
||
|
||
PROMPC: 0 ;PIECE PAWN PROMOTED TO
|
||
|
||
PROTX1: 'Q
|
||
'R
|
||
'B
|
||
'N
|
||
|
||
RMOVE5: PUSHJ P,RCHA
|
||
SUBI A,40
|
||
JUMPE A,RMOVE5
|
||
MOVSI B,-4
|
||
CAME A,PROTX1(B)
|
||
AOBJN B,.-1
|
||
JUMPGE B,RMERR
|
||
EXCH B,PROMPC
|
||
JUMPE B,RMOVE6
|
||
|
||
RMERR: PUSHJ P,QMTYO
|
||
PUSHJ P,TYO
|
||
PUSHJ P,CRR
|
||
|
||
RMOVE3: CLEARB B,CASLF
|
||
CLEARB D,TAKES
|
||
CLEARB TT,GME
|
||
CLEARM TAKES1
|
||
CLEARM TAKES2
|
||
SETZM PROMPC
|
||
RMOVE6: CLEARM EQSGNF
|
||
RMOVE2: SKIPE EQSGNF
|
||
JRST RMOVE5
|
||
PUSHJ P,GSYL
|
||
SKIPE GSYLNF
|
||
JRST RMNI
|
||
JUMPE B,RMOVE1
|
||
CAMN A,[1,,]
|
||
SETOM CASLF
|
||
CAIL D,LSYLT
|
||
JRST RMVE2A
|
||
MOVEM A,SYLT(D)
|
||
AOS D
|
||
RMVE2A: LSH TT,1
|
||
SKIPN SQN
|
||
TRO TT,1
|
||
|
||
RMOVE1: SKIPL GME
|
||
JRST RMOVE2
|
||
CAIGE D,2
|
||
JRST RMOVE3
|
||
SKIPE CASLF
|
||
JRST RMOVE4
|
||
|
||
ANDI TT,17
|
||
SKIPGE PSTB(TT)
|
||
JRST RMERR
|
||
LDB A,[PMI,,PSTB(TT)]
|
||
MOVE T,SYLT-2(A) ;POSS PIECE TO MOVE
|
||
LDB A,[SMI,,PSTB(TT)]
|
||
MOVE I,SYLT-2(A) ;POSS ORG SQUARE
|
||
LDB A,[DPMI,,PSTB(TT)]
|
||
MOVE R,SYLT-2(A) ;POSSIBLE PIECE TAKEN
|
||
LDB A,[DSMI,,PSTB(TT)]
|
||
MOVE Q,SYLT-2(A) ;POSSIBLE DESTIN LOCN
|
||
|
||
|
||
AMBC: CLEARM LGLMV
|
||
LSH T,1
|
||
MOVE J,SIDE
|
||
AOS J
|
||
AMBC3: JUMPE T,AMBC1
|
||
JUMPG T,AMBC2
|
||
PUSHJ P,CHK1
|
||
AMBC2: LSH T,1
|
||
AOJA J,AMBC3
|
||
AMBC1: SKIPE A,LGLMV
|
||
JRST POPJ1
|
||
PTTY [ASCII /IMPOSSIBLE!/]
|
||
JRST RMERR
|
||
|
||
RMOVE4: MOVEI A,1
|
||
CAIE D,2
|
||
MOVEI A,2
|
||
SKIPE SIDE
|
||
TLO A,200000
|
||
JRST POPJ1
|
||
|
||
|
||
CHK1: PUSH P,J
|
||
PUSH P,I
|
||
JUMPL I,CHK2
|
||
HRRZ S,I
|
||
CAME S,PIECEL(J)
|
||
JRST CHK1A ;LOCN DOESNT AGREE
|
||
CHK2: PUSH P,B
|
||
PUSH P,A
|
||
PUSH P,Q
|
||
MOVE B,J
|
||
JUMPL Q,CHK3 ;NO DESTIN SQ
|
||
PUSH P,Q
|
||
HRRZ A,Q
|
||
PUSHJ P,LGLMP
|
||
HLLZS (P)
|
||
HLRZ A,(P)
|
||
PUSHJ P,LGLMP
|
||
HRRZS (P)
|
||
POP P,Q
|
||
JUMPE Q,CHK2R
|
||
|
||
CHK3: SKIPL TAKES
|
||
JRST FM1 ;LEGAL MOVE
|
||
PUSH P,R ;CHECK CAPTURED PIECE
|
||
MOVE C,SIDE
|
||
XORI C,NPCS
|
||
AOS C
|
||
JUMPGE R,CHK3C1 ;NOT GHOST
|
||
SKIPN A,GHLOC
|
||
JRST CHK3C1
|
||
PUSHJ P,LGLMP
|
||
JRST CHK3C1
|
||
MOVE Q,GHLOC
|
||
POP P,R
|
||
JRST FM1
|
||
|
||
CHK3C1: LSH R,1
|
||
CHK3C: JUMPE R,CHK3R
|
||
JUMPG R,CHK3A
|
||
MOVE A,PIECEL(C)
|
||
JUMPL Q,CHK3D
|
||
CAIN A,(Q)
|
||
JRST CHK3D
|
||
MOVSS Q
|
||
CAIE A,(Q)
|
||
JRST CHK3A
|
||
CHK3D: PUSHJ P,LGLMP
|
||
JRST CHK3A
|
||
|
||
PUSHJ P,FM4A
|
||
CHK3A: LSH R,1
|
||
AOJA C,CHK3C
|
||
|
||
|
||
CHK3R: POP P,R
|
||
CHK2R: POP P,Q
|
||
POP P,A
|
||
POP P,B
|
||
CHK1R: POP P,I
|
||
POP P,J
|
||
POPJ P,
|
||
|
||
CHK1A: HLRZ S,I
|
||
CAME S,PIECEL(J)
|
||
JRST CHK1R
|
||
JRST CHK2
|
||
|
||
FM1: JUMPL Q,RMERR2
|
||
TRNN Q,-1
|
||
MOVSS Q
|
||
TLNE Q,-1
|
||
JRST RMERR2
|
||
SKIPE LGLMV
|
||
JRST RMERR2
|
||
SKIPE C,BOARD(Q)
|
||
JRST FM2
|
||
MOVEI A,0
|
||
DPB J,[MPC,,A]
|
||
SKIPE SIDE
|
||
TLO A,200000
|
||
MOVE S,PIECEL(J)
|
||
DPB S,[MPO,,A]
|
||
DPB Q,[MPTO,,A]
|
||
MOVEM A,LGLMV
|
||
JRST CHK2R
|
||
|
||
FM2: MOVEI C,-PIECE(C)
|
||
PUSHJ P,FM4
|
||
JRST CHK2R
|
||
|
||
FM4A: SKIPE LGLMV
|
||
JRST RMERR3 ;AMB
|
||
FM4: MOVSI A,(SETZ)
|
||
DPB J,[MPC,,A]
|
||
SKIPE SIDE
|
||
TLO A,200000
|
||
MOVE S,PIECEL(J)
|
||
DPB S,[MPO,,A]
|
||
DPB C,[MPTK,,A]
|
||
MOVE S,PIECEL(C)
|
||
DPB S,[MPTO,,A]
|
||
FM5: MOVEM A,LGLMV
|
||
POPJ P,
|
||
|
||
|
||
RMERR3:
|
||
RMERR2: PTTY [ASCII /AMBIGUOUS!/]
|
||
SETOM DISSUP
|
||
JRST MNLP
|
||
|
||
LGLMP: SKIPE S,PIECEL(B) ;LEGAL FOR PIECE B TO MOVE TO SQ A
|
||
LGLMP2: SKIPGE T1,BOARD(A)
|
||
POPJ P,
|
||
JUMPE T1,@LGLMPT(B)
|
||
MOVE T2,(T1)
|
||
XOR T2,PIECE(B)
|
||
JUMPGE T2,CPOPJ ;OUR GUY THERE NOW
|
||
JRST @LGLMPT(B)
|
||
|
||
FLGLMP: SKIPE S,PIECEL(B) ;DONT CONSIDER WHAT PIECE IS IN DESTIN SQ
|
||
SKIPGE T1,BOARD(A)
|
||
POPJ P,
|
||
SKIPL LMGT(B) ;SKIP ON PAWN
|
||
JRST @LGLMPT(B)
|
||
SKIPGE PIECE(B)
|
||
JRST FLGLP1
|
||
CAIN A,BW+1(S)
|
||
JRST POPJ1
|
||
CAIE A,BW-1(S)
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
FLGLP1: CAIN A,-BW+1(S)
|
||
JRST POPJ1
|
||
CAIE A,-BW-1(S)
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
|
||
LWPWN: CAIN A,BW(S)
|
||
JRST LWPW1
|
||
CAIN A,2*BW(S)
|
||
JRST LWPW2
|
||
CAIE A,BW+1(S)
|
||
CAIN A,BW-1(S)
|
||
JRST LWPW3
|
||
POPJ P,
|
||
|
||
LWPW2: CAIL S,4*BW
|
||
POPJ P,
|
||
SKIPN BOARD+2*BW(S)
|
||
LWPW1: SKIPE BOARD+BW(S)
|
||
POPJ P,
|
||
POPJ1: AOS (P)
|
||
POPJ P,
|
||
|
||
LWPW3: SKIPE BOARD(A)
|
||
JRST POPJ1 ;SQUARE OCC + ITS NOT OUR GUY + ON BOARD
|
||
SKIPGE GHSD
|
||
CAME A,GHLOC
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
LBPWN: CAIN A,-BW(S)
|
||
JRST LBPW1
|
||
CAIN A,-2*BW(S)
|
||
JRST LBPW2
|
||
CAIE A,-BW+1(S)
|
||
CAIN A,-BW-1(S)
|
||
JRST LBPW3
|
||
POPJ P,
|
||
|
||
LBPW2: CAIG S,8*BW
|
||
POPJ P,
|
||
SKIPN BOARD-2*BW(S)
|
||
LBPW1: SKIPE BOARD-BW(S)
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
LBPW3: SKIPE BOARD (A)
|
||
JRST POPJ1
|
||
SKIPLE GHSD
|
||
CAME A,GHLOC
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
LROOK: MOVEM S,LBSS
|
||
MOVSI T2,-4
|
||
LROOK1: MOVE S,LBSS
|
||
XCT RDTINS(T2)
|
||
JRST LROOK2
|
||
LDB T1,STPLT2(T2)
|
||
LDB ZR,STPLT3(T2)
|
||
CAME T1,ZR
|
||
JRST LROOK2
|
||
LROOK4: ADD S,RDT(T2)
|
||
SKIPGE T1,BOARD(S)
|
||
JRST LROOK2
|
||
CAMN A,S
|
||
JRST POPJ1
|
||
JUMPE T1,LROOK4
|
||
CAIN T1,PIECE(B)
|
||
JRST LROOK4 ;DONT ALLOW PIECE TO BE BLOCKED BY ITSELF
|
||
;POSSIBLE ON CALL FROM LR3A
|
||
LROOK2: AOBJN T2,LROOK1
|
||
POPJ P,
|
||
|
||
|
||
|
||
|
||
LQUEEN: PUSHJ P,LROOK
|
||
JRST .+3
|
||
JRST POPJ1
|
||
LBIS: MOVEM S,LBSS
|
||
MOVSI T2,-4
|
||
LBIS1: MOVE S,LBSS
|
||
XCT BDTINS(T2)
|
||
JRST LBIS2
|
||
LDB T1,STPLT2+4(T2)
|
||
LDB ZR,STPLT3+4(T2)
|
||
CAME ZR,T1
|
||
JRST LBIS2
|
||
LBIS4: ADD S,BDT(T2)
|
||
SKIPGE T1,BOARD(S)
|
||
JRST LBIS2
|
||
CAMN A,S
|
||
JRST POPJ1
|
||
JUMPE T1,LBIS4
|
||
CAIN T1,PIECE(B)
|
||
JRST LBIS4
|
||
LBIS2: AOBJN T2,LBIS1
|
||
POPJ P,
|
||
|
||
|
||
LKNT: CAIE A,2*BW+1(S)
|
||
CAIN A,2*BW-1(S)
|
||
JRST POPJ1
|
||
CAIE A,-2*BW+1(S)
|
||
CAIN A,-2*BW-1(S)
|
||
JRST POPJ1
|
||
CAIE A,BW+2(S)
|
||
CAIN A,BW-2(S)
|
||
JRST POPJ1
|
||
CAIE A,-BW+2(S)
|
||
CAIN A,-BW-2(S)
|
||
JRST POPJ1
|
||
POPJ P,
|
||
|
||
|
||
LKING: CAIE A,BW+1(S)
|
||
CAIN A,BW-1(S)
|
||
JRST POPJ1
|
||
CAIE A,BW(S)
|
||
CAIN A,-BW(S)
|
||
JRST POPJ1
|
||
CAIE A,1(S)
|
||
CAIN A,-1(S)
|
||
JRST POPJ1
|
||
CAIE A,-BW-1(S)
|
||
CAIN A,-BW+1(S)
|
||
JRST POPJ1
|
||
POPJ P,
|
||
|
||
LBSS: 0
|
||
|
||
|
||
ASTOP: SETOM CLKCOK
|
||
POPJ P,
|
||
|
||
IFN UTAPE,[
|
||
ARST: CLEARM RSAWMN
|
||
PUSHJ P,AUREAD
|
||
ARST1: SETOM UREADF
|
||
POPJ P,
|
||
|
||
IFN TS,[
|
||
AREPLAY: TDZA T2,T2
|
||
ACOMP: MOVNI T2,1
|
||
MOVEM T2,COMPF
|
||
MOVSI T2,600000
|
||
JRST AFILR2
|
||
]
|
||
]
|
||
IFE DECTS,[
|
||
|
||
IFN UTAPE,[
|
||
IFN TS,[
|
||
ARDB: SKIPA T2,[400000,,4] ;READ BINARY
|
||
AWRB: MOVEI T2,5 ;WRITE BINARY
|
||
JRST AFILR2
|
||
|
||
AWRBB: MOVEI T2,7 ;WRITE BLOCK BINARY
|
||
JRST AFILR2
|
||
|
||
ARDBB: SKIPA T2,[400000,,6] ;READ BLOCK BINARY
|
||
]
|
||
IFE TS,AWRB: ;NO DIFFERENCE IN OPEN FOR BINARY OUT OF TS
|
||
AWRT: MOVEI T2,1
|
||
JRST AFILR2
|
||
|
||
AFILE: TDZA T2,T2
|
||
|
||
IFE TS,ARDB: ;NO DIFFERENCE IN OPEN FOR BINARY OUT OF TS
|
||
AUREAD: MOVSI T2,400000
|
||
AFILR2: MOVEM T2,READF
|
||
PUSHJ P,FSYL
|
||
JRST UREDE
|
||
AURD1: MOVSI A,(SETZ)
|
||
MOVEM A,CFILE
|
||
MOVEM B,CFILE+1
|
||
PUSHJ P,FSYL
|
||
JRST UREDE
|
||
EXCH B,CFILE+1
|
||
MOVEM B,CFILE
|
||
PUSHJ P,FSYL
|
||
JRST UREDE
|
||
IFE TS,[
|
||
MOVE A,T1
|
||
PUSHJ P,TAPKIL"
|
||
EXCH A,TAPN
|
||
PUSHJ P,TAPKIL
|
||
] ;CLOSE TS
|
||
IFN TS,[
|
||
HLRM B,TAPN
|
||
SKIPE B
|
||
] ;CLOSE TS
|
||
UREDE: MOVE A,TAPN
|
||
PUSHJ P,FILEST"
|
||
JRST UNAB
|
||
MOVE A,CFILE
|
||
MOVE B,CFILE+1
|
||
MOVE C,READF
|
||
IFN TS, HRLM C,UTIN
|
||
JUMPGE C,UWRR ;WRITE
|
||
PUSHJ P,OPNRD"
|
||
JRST FNF
|
||
MOVE C,READF
|
||
TLNN C,200000
|
||
JRST PSRET ;RETURN IF NOT REPLAY
|
||
SKIPGE COMPF
|
||
JRST ACOMP1
|
||
PUSHJ P,ARS0 ;DO A RESET.
|
||
CLEARM RWPF ;REPLAY
|
||
CLEARM RBPF
|
||
PTTY [ASCII /PLAY WHITE? !/]
|
||
PUSHJ P,RDYON
|
||
SETOM RWPF
|
||
PTTY [ASCII /
|
||
BLACK? !/]
|
||
PUSHJ P,RDYON
|
||
SETOM RBPF
|
||
PTTY [ASCIZ /
|
||
FROM PLY #? /]
|
||
PUSHJ P,GETNUM
|
||
MOVEM C,RPLYPN
|
||
MOVEI A,ARPLY
|
||
MOVEM A,GSW
|
||
SKIPE CLKSW
|
||
AOSE CLKCOK
|
||
JRST ARST1
|
||
CLEARM MACCLR
|
||
PTTY [ASCII /CLOCK STARTED!/]
|
||
JRST ARST1
|
||
|
||
ACOMP1: CLEARM COBW ;COMPARE MODE.
|
||
CLEARM COWW
|
||
CLEARM COBB
|
||
CLEARM COWB
|
||
MOVEI A,ACMP
|
||
MOVEM A,GSW
|
||
JRST ARST1
|
||
|
||
|
||
FNF: PTTY [ASCII /FILE NOT FOUND!/]
|
||
MOVE P,RMERR1
|
||
POPJ P,
|
||
|
||
UNAB: ERRTTY [ASCII /UNIT UNABLE!/]
|
||
|
||
READF: 0 ;-1 READ 0 WRITE 1 FILE
|
||
|
||
UWRR: JUMPE C,AFILR1
|
||
PUSHJ P,OPNWR"
|
||
ERRTTY [ASCII /DIR FUL!/]
|
||
POPJ P,
|
||
|
||
ASAVE: PUSHJ P,AWRT
|
||
MOVEI B,UWD
|
||
SKIPE TMSPOT
|
||
SOUT SPOTSW
|
||
SETOM PMRDF
|
||
PUSHJ P,APG6
|
||
AFILR1: MOVE A,CFILE
|
||
MOVE B,CFILE+1
|
||
PUSHJ P,FILE"
|
||
PTTY [ASCII /U LOSE!/]
|
||
POPJ P,
|
||
|
||
RDYON: PUSHJ P,TYI
|
||
CAIN A,"N
|
||
JRST POPJ1
|
||
CAIN A,"Y
|
||
POPJ P,
|
||
MOVEI A,"?
|
||
PUSHJ P,TYO
|
||
JRST RDYON
|
||
|
||
FSYL: SKIPE TERMF
|
||
POPJ P,
|
||
CLEARB T1,B
|
||
MOVE C,[10600,,B-1]
|
||
FSYL1: PUSHJ P,TYI
|
||
CAIN A,177
|
||
JRST GERR
|
||
CAIN A,";
|
||
JRST FSYL3
|
||
CAIG A,40
|
||
JRST FSYL2
|
||
IMULI T1,10.
|
||
ADDI T1,-"0(A)
|
||
SUBI A,40
|
||
TLNE C,770000
|
||
IDPB A,C
|
||
JRST FSYL1
|
||
|
||
FSYL2: CAIE A,40
|
||
SETOM TERMF
|
||
CAMN C,[10600,,B-1]
|
||
JRST FSYL
|
||
JRST POPJ1
|
||
|
||
FSYL3: .SUSET [.SSNAM,,B]
|
||
JRST FSYL
|
||
TERMF: 0
|
||
|
||
CFILE: SIXBIT /BOOK/
|
||
SIXBIT /MOVES/
|
||
|
||
TAPN: IFE TS, 2
|
||
IFN TS, (SIXBIT /DSK/)
|
||
IFN TS,[
|
||
TAPKIL=CPOPJ
|
||
FILEST: HRRM A,UTIN
|
||
JRST POPJ1
|
||
|
||
OPNRD: MOVEM A,UTIN+1
|
||
MOVEM B,UTIN+2
|
||
ROPNRD: .OPEN UTYIC,UTIN
|
||
POPJ P,
|
||
JRST POPJ1
|
||
|
||
UTIN: (SIXBIT /DSK/)
|
||
SIXBIT /TEST/
|
||
SIXBIT /GAME/
|
||
0
|
||
|
||
OPNWR: MOVEM A,UTIN+1
|
||
MOVEM B,UTIN+2
|
||
.OPEN UTYOC,UTIN
|
||
POPJ P,
|
||
JRST POPJ1
|
||
|
||
FILE: .CLOSE UTYOC,
|
||
JRST POPJ1
|
||
]
|
||
]
|
||
|
||
]
|
||
|
||
IFN DECTS,[
|
||
|
||
AWRB: SKIPA T2,[13]
|
||
AFILE: MOVEI T2,1
|
||
HRRM T2,AWRT1
|
||
PUSHJ P,AFILER
|
||
AFILEW: RELEASE UTYOC,
|
||
SETZM UTINT
|
||
POPJ P,
|
||
|
||
AFILER: RELEASE UTYIC,
|
||
SETZM UREADF
|
||
POPJ P,
|
||
|
||
AWRT: SETZM UTINT
|
||
PUSHJ P,GFILE
|
||
AWRT1: INIT UTYOC,1
|
||
DEVNAM: SIXBIT /DSK/
|
||
XWD UTYOO,0
|
||
ERRTTY [ASCII /DEVICE NOT AVAILABLE!/]
|
||
ENTER UTYOC,CFILE
|
||
ERRTTY [ASCII /DIRECTORY FULL!/]
|
||
MOVEI T1,UTYOB
|
||
EXCH T1,JOBFF
|
||
OUTBUF UTYOC,1
|
||
MOVEM T1,JOBFF
|
||
OUTPUT UTYOC,
|
||
SETOM UTINT
|
||
POPJ P,
|
||
|
||
UTYOO: BLOCK 3
|
||
UTYOB: BLOCK 203
|
||
UTINT: 0
|
||
|
||
ARDB: SKIPA T2,[13]
|
||
AUREAD: MOVEI T2,1
|
||
HRRM T2,AURD1
|
||
SETZM UREADF
|
||
PUSHJ P,GFILE
|
||
MOVE A,DEVNAM
|
||
MOVEM A,DEVNM1
|
||
AURD1: INIT UTYIC,1
|
||
DEVNM1: SIXBIT /DSK/
|
||
XWD 0,UTYII
|
||
ERRTTY [ASCII /DEVICE NOT AVAILABLE!/]
|
||
LOOKUP UTYIC,CFILE
|
||
ERRTTY [ASCII /FILE NOT FOUND!/]
|
||
MOVEI T1,UTYIB
|
||
EXCH T1,JOBFF
|
||
INBUF UTYIC,1
|
||
MOVEM T1,JOBFF
|
||
SETOM UREADF
|
||
POPJ P,
|
||
|
||
UTYII: BLOCK 3
|
||
UTYIB: BLOCK 203
|
||
|
||
CFILE: SIXBIT /CHESS/
|
||
SIXBIT /MVS/
|
||
0
|
||
0
|
||
|
||
GFILE: SETZM CFILE+3
|
||
SETZM TERMF
|
||
PUSHJ P,FSYL
|
||
MOVEM B,DEVNAM
|
||
PUSHJ P,FSYL
|
||
MOVEM B,CFILE
|
||
CAIE A,".
|
||
POPJ P,
|
||
PUSHJ P,FSYL ;GET FILENAMEXTENSION
|
||
HLLM B,CFILE+1 ;...
|
||
POPJ P, ;TRA 1,4
|
||
|
||
TERMF: 0
|
||
|
||
FSYL: SKIPE TERMF
|
||
JRST GERR
|
||
SETZB T1,B
|
||
MOVE C,[XWD 10600,B-1]
|
||
FSYL1: PUSHJ P,TYI
|
||
CAIN A,177
|
||
JRST GERR
|
||
CAIE A,".
|
||
CAIN A,":
|
||
JRST FSYL21
|
||
CAIG A,40
|
||
JRST FSYL2
|
||
IMULI T1,10.
|
||
ADDI T1,-"0(A)
|
||
SUBI A,40
|
||
TLNE C,770000
|
||
IDPB A,C
|
||
JRST FSYL1
|
||
|
||
FSYL2: CAIE A,40
|
||
SETOM TERMF
|
||
FSYL21: CAMN C,[XWD 10600,B-1]
|
||
JRST FSYL
|
||
POPJ P,
|
||
|
||
ASAVE: PUSHJ P,AWRT
|
||
MOVEI B,UWD
|
||
SETOM PMRDF
|
||
PUSHJ P,APG6
|
||
AFILR1: JRST AFILEW
|
||
|
||
]
|
||
|
||
AHBPT: PUSHJ P,GETNUM
|
||
MOVEM C,HBPTSW
|
||
JUMPE C,AHBPT1
|
||
LDB I,[100,,PLYN]
|
||
PUSHJ P,HASHR
|
||
JFCL
|
||
MOVEM S,HSBPT
|
||
POPJ P,
|
||
|
||
AHBPT1: CLEARM HSBPT
|
||
POPJ P,
|
||
|
||
|
||
ALIST: MOVE B,PNTS ;LIST ALL PSEUDOS
|
||
PUSHJ P,DCRR
|
||
MOVSI J,SYMPS-BKSMS
|
||
ALIST1: MOVE D,SYMPS(J)
|
||
MOVE R,[440600,,D]
|
||
ALIST2: ILDB A,R
|
||
ADDI A,40
|
||
CAIE A,40
|
||
PUSHJ P,(B)
|
||
TLNE R,770000
|
||
JUMPN A,ALIST2
|
||
SKIPL D,PSDS(J)
|
||
JRST ALIST3
|
||
MOVEI A,"= ;STD I O
|
||
TLNN D,200000
|
||
JRST ALIST5 ;STD O
|
||
ALIST4: PUSHJ P,(B)
|
||
MOVE A,(D)
|
||
PUSHJ P,DPT
|
||
ALIST3: PUSHJ P,DCRR
|
||
SKIPL QTF
|
||
AOBJN J,ALIST1
|
||
POPJ P,
|
||
|
||
ALIST5: MOVEI A,"-
|
||
SOS D
|
||
JRST ALIST4
|
||
|
||
ASTEST: PUSHJ P,GETNUM ;SET ESTIMATE TO BRACKET INITAL A-B AROUND
|
||
MOVEM C,EST
|
||
SETOM ESTSW
|
||
MOVE T1,PLYN
|
||
MOVEM T1,SETESP
|
||
POPJ P,
|
||
|
||
;;AHPV
|
||
AHPV: SETOM DISSUP ;SO DISPLAY WONT CLOBBER
|
||
MOVE B,TRPSW
|
||
AHPPV: PUSHJ P,AHLOOK
|
||
POPJ P,
|
||
HRRZM R,AHPTM4
|
||
SOUT AHPVT
|
||
PUSH P,J
|
||
PUSH P,Q
|
||
PUSH P,R
|
||
PUSH P,D
|
||
PUSH P,C
|
||
PUSH P,NHSW
|
||
PUSH P,B ;MUST BE LAST
|
||
NAHPSH==7
|
||
MOVEM P,BKTM2
|
||
MOVEI A,AHPPV1
|
||
MOVEM A,BKF2R
|
||
CLEARM LMGD
|
||
CLEARM LMGD2 ;MAKE SURE IT DOES NOT GO TO PCG
|
||
SETOM NHSW ;TO AVOID CLOBBERING HT AT LMG
|
||
LDB I,[100,,PLYN]
|
||
PUSHJ P,LMG
|
||
ERRTTY [ASCIZ /LMG RETURNED AHPV/]
|
||
|
||
AHPPV1: PUSHJ P,LMGXR
|
||
AOS LGLMST
|
||
HRRZS T1,LGLMST
|
||
AHPPV3: CAIN T1,1(P)
|
||
JRST AHPPV2
|
||
HLRZ B,(T1)
|
||
HRRZ A,(T1)
|
||
PUSH P,T1
|
||
LDB I,[100,,PLYN]
|
||
PUSHJ P,TMOVE ;PLAY MOVE
|
||
JRST AHPPV4
|
||
PUSHJ P,AHLOOK
|
||
JRST AHPPV6 ;NOT FOUND THEREFORE NOT INVESTIGATED
|
||
POP P,T1
|
||
CLEARM 1(T1) ;PLAUS #
|
||
MOVEM C,2(T1) ;HASH KEY OF NEXT POS
|
||
MOVEM D,3(T1) ;VALUE
|
||
PUSH P,T1
|
||
PUSHJ P,UNMOVE
|
||
POP P,T1
|
||
JRST AHPPV5
|
||
|
||
AHPPV6: PUSHJ P,UNMOVE
|
||
AHPPV4: POP P,T1
|
||
SETOM 1(T1)
|
||
AHPPV5: ADDI T1,NWDPM
|
||
JRST AHPPV3
|
||
|
||
AHPVT: ASCIZ /P.V. IN HT
|
||
/
|
||
|
||
AHPTM: 0
|
||
AHPTM1: 0
|
||
AHPTM2: 0
|
||
AHPTM4: 0
|
||
AHPTM5: 0
|
||
|
||
AHLOOK: LDB I,[100,,PLYN]
|
||
PUSHJ P,HASHR
|
||
JFCL
|
||
MOVE R,GAMP
|
||
SKIPN C,HSTB(T2)
|
||
POPJ P, ;NOT FOUND
|
||
MOVE D,HSTBV(T2)
|
||
MOVEM D,GAMEV+1-GAME(R)
|
||
MOVEM C,GHK1+1-GAME(R)
|
||
MOVE R,HSTBL(T2)
|
||
MOVE J,HSTB(R) ;HSTB-1/ 0
|
||
JRST POPJ1
|
||
|
||
|
||
AHPPV2: MOVE T1,LGLMST
|
||
AHPPV7: CAIN T1,1(P) ;FIND ANOTHER MV INVESTIGATED (NOT NECC. NEXT IN OCM)
|
||
JRST AHPPVD
|
||
SKIPL 1(T1)
|
||
JRST AHPPV8 ;THIS ONE NOT LOOKED AT YET
|
||
AHPPV9: ADDI T1,NWDPM
|
||
JRST AHPPV7
|
||
|
||
AHPPV8: PUSHJ P,AHPP1
|
||
MOVE B,BKTM2
|
||
MOVE B,(B)
|
||
SKIPGE AHPTM5
|
||
SOUT [ASCIZ /-MAIN-/]
|
||
JRST AHPP2
|
||
|
||
AHPP1: MOVE Q,T1 ;T1 POINTS AT MOVE ENTRY BLOCK ON PDL
|
||
PUSH P,2(Q) ;HSH KEY OF POS RESULTING FROM THIS MV
|
||
SETOM 1(Q)
|
||
HRRZ A,(Q)
|
||
HLRZ B,(Q)
|
||
LDB I,[100,,PLYN]
|
||
PUSHJ P,TMOVE
|
||
JFCL
|
||
CLEARM AHPTM
|
||
CLEARM AHPTM5
|
||
AOSA AHPTM
|
||
AHPP3: CLEARM AHPTM
|
||
SETOM AHPTM1
|
||
AHPPVC: PUSHJ P,AHLOOK
|
||
JRST AHPPVA ;NOT FOUND
|
||
AOSE AHPTM1
|
||
JRST AHPP3A
|
||
MOVEM D,AHPTM2 ;FIRST TIME THRU, SAVE VALUE
|
||
HRRZ ZR,T2
|
||
CAMN ZR,AHPTM4
|
||
SETOM AHPTM5
|
||
AHPP3A: EXCH J,(P)
|
||
JUMPE J,AHPP4A
|
||
CAME J,C
|
||
ERRTTY [ASCIZ /FALSE HASH MATCH/] ;IF GET HERE, AHPTM1 HAS NUMBER PLIES INTO
|
||
; PV LOSSAGE OCURRED
|
||
AHPP4A: JUMPL R,AHPPVB ;MOVE NOT ACTUALLY PLAYED, JUST ANSWERS ALL
|
||
LDB B,[HSTPON,,R]
|
||
LDB A,[HSTSQN,,R]
|
||
LDB T1,[HSTPRN,,R]
|
||
SKIPN T1
|
||
JUMPE A,AHPPVB ;NO MORE FROM THIS POSITION
|
||
MOVE T2,GAMP
|
||
MOVE ZR,AHPTM
|
||
JUMPE ZR,AHPP4C
|
||
AHPP4B: CAMN C,GHK1-GAME-1(T2) ;DETECT LOOP AND DROP OUT
|
||
JRST AHPPVB
|
||
SOS T2
|
||
SOJG ZR,AHPP4B
|
||
AHPP4C: PUSHJ P,TMOVE2 ;USES T1
|
||
ERRTTY [ASCIZ /HASH TBL MV ILLEGAL- AHPV/]
|
||
AOS AHPTM
|
||
JRST AHPPVC
|
||
|
||
AHPPVA: SKIPE (P)
|
||
ERRTTY [ASCIZ /HASH DIDNT MATCH, WAS SUPPOSED TO-HPV/]
|
||
AHPPVB: CLEARM CVPR
|
||
AHPPVE: MOVE T1,GAMP
|
||
SOSGE AHPTM
|
||
JRST AHPPVX
|
||
PUSHJ P,UMHR
|
||
JRST AHPPVE
|
||
|
||
AHPP4: PUSH P,[0]
|
||
JRST AHPP3
|
||
|
||
UMHR: ;GAMP IN T1
|
||
PUSHJ P,RECMP
|
||
JRST UNMOVE
|
||
|
||
AHPPVX: SUB P,[1,,1]
|
||
POPJ P,
|
||
|
||
AHPP2: MOVE C,BKTM2
|
||
MOVE B,(C)
|
||
MOVE R,CVPR
|
||
PUSHJ P,TYPLNE
|
||
MOVE C,CVPR
|
||
PUSHJ P,LFSRC
|
||
CLEARM CVPR
|
||
PUSHJ P,DCRR
|
||
SKIPGE AHPTM1
|
||
SOUT [ASCIZ /NO VAL?/]
|
||
LDB T1,[HTVCOD,,AHPTM2]
|
||
SOUT AHPXT(T1)
|
||
HRRE A,AHPTM2
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DTAB
|
||
PUSHJ P,DCRR
|
||
JRST AHPPV2
|
||
|
||
AHPXT: ASCII /=!/
|
||
ASCII />=!/
|
||
ASCII /<=!/
|
||
ASCII /G!/
|
||
ASCII /S!/
|
||
ASCII /IN!/
|
||
ASCII /OUT!/
|
||
ASCII /?!/
|
||
|
||
AHPPVD: MOVE P,BKTM2
|
||
POP P,B
|
||
POP P,NHSW
|
||
POP P,C
|
||
POP P,D
|
||
POP P,R
|
||
POP P,Q
|
||
POP P,J
|
||
LDB T1,[HTVCOD,,D]
|
||
SOUT AHPXT(T1)
|
||
HRRE A,D
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
IFN DSPLY,[
|
||
SKIPL GETTY
|
||
SETOM DISSUP
|
||
]
|
||
POPJ P,
|
||
|
||
HK1V: 4 ;BASIC SETD
|
||
ASETD: PUSHJ P,GETNUM
|
||
SETDR: MOVE A,FDCUT
|
||
SUB A,HK1V
|
||
ADD A,C
|
||
MOVEM A,FDCUT
|
||
MOVEM C,HK1V
|
||
PSRET: POPJ P,
|
||
|
||
ASETW: SKIPE EQSGNF
|
||
JRST ASETWA
|
||
MOVEI I,0
|
||
ASETW1: PUSHJ P,GETNUM
|
||
JUMPLE C,ASETW1
|
||
MOVEM C,SBR(I)
|
||
SKIPN GME
|
||
AOJA I,ASETW1
|
||
ASETW2: CAIL I,SBRLNG-1
|
||
POPJ P,
|
||
MOVE A,SBR(I)
|
||
MOVEM A,SBR+1(I)
|
||
AOJA I,ASETW2
|
||
|
||
ASETWA: MOVEI B,TYO
|
||
PSETW: SETZM ASTWF
|
||
PUSH P,[0]
|
||
MOVEI I,SBRLNG ;LENGTH OF DEPTH VECTOR
|
||
MOVE T1,SBR-1(I) ;LAST ENTRY
|
||
ASETW3: CAME T1,SBR-1(I)
|
||
SETOM ASTWF
|
||
SKIPE ASTWF
|
||
PUSH P,SBR(I) ;PUSH FROB IF HAVE SEEN ONE DIFFERENT
|
||
MOVE T1,SBR-1(I)
|
||
SOJN I,ASETW3
|
||
MOVE A,SBR
|
||
ASETW4: PUSH P,A
|
||
PUSHJ P,DSPACE
|
||
POP P,A
|
||
PUSHJ P,DPT
|
||
POP P,A
|
||
JUMPE A,CPOPJ
|
||
JRST ASETW4
|
||
|
||
ASTWF: 0
|
||
|
||
|
||
IFE DECTS,[
|
||
ASPARM: PUSHJ P,GETNUM
|
||
CAIL C,NPARS
|
||
JRST ASPAR1
|
||
MOVE T1,HK1V
|
||
MOVEM T1,PARD(C)
|
||
MOVE T1,MCFB
|
||
MOVEM T1,PARF(C)
|
||
IMULI C,SBRLNG
|
||
MOVSI T1,SBR
|
||
HRR T1,PARW(C)
|
||
HRRZ T2,T1
|
||
BLT T1,SBRLNG-1(T2)
|
||
POPJ P,
|
||
|
||
ASPAR1: PTTY [ASCII /ILLEGAL PARAMETER SET!/]
|
||
POPJ P,
|
||
|
||
APPAR: MOVEI B,TYO
|
||
PUSHJ P,DCRR
|
||
MOVEI C,0
|
||
APPAR1: SOUT [ASCIZ /SET #/]
|
||
MOVE A,C
|
||
PUSHJ P,DPT
|
||
SOUT [ASCIZ /, SETD= /]
|
||
MOVE A,PARD(C)
|
||
PUSHJ P,DPT
|
||
SOUT [ASCIZ /, SETF= /]
|
||
MOVE A,PARF(C)
|
||
PUSHJ P,DPT
|
||
SOUT [ASCIZ /, SETW= /]
|
||
MOVE T2,C
|
||
IMULI T2,SBRLNG
|
||
MOVEI S,SBRLNG-1(T2)
|
||
SETZM ASTWF
|
||
PUSH P,[0] ;MARKS PLACE ON STACK
|
||
MOVE T1,PARW(S)
|
||
APPAL1: CAME T1,PARW(S)
|
||
SETOM ASTWF
|
||
SKIPE ASTWF
|
||
PUSH P,PARW+1(S)
|
||
MOVE T1,PARW(S)
|
||
CAMLE S,T2
|
||
SOJA S,APPAL1
|
||
MOVE A,PARW(T2)
|
||
APPAL2: PUSH P,A
|
||
PUSHJ P,DSPACE
|
||
POP P,A
|
||
PUSHJ P,DPT
|
||
POP P,A
|
||
JUMPN A,APPAL2
|
||
PUSHJ P,DCRR
|
||
CAIGE C,NPARS-1
|
||
AOJA C,APPAR1
|
||
|
||
SOUT [ASCIZ /BASE PARAMETER SET /]
|
||
MOVE A,BASPAR
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
POPJ P,
|
||
|
||
]
|
||
GETNUM: MOVEI C,0
|
||
SETZM GME
|
||
JRST GSYLN1
|
||
|
||
GETONM: MOVEI C,0
|
||
GETNM1: PUSHJ P,RCHA
|
||
CAIN A,177
|
||
JRST GERR
|
||
CAIL A,"0
|
||
CAILE A,"9
|
||
POPJ P,
|
||
IMULI C,10
|
||
ADDI C,-"0(A)
|
||
JRST GETNM1
|
||
|
||
PBOARD: MOVE B,PNTS
|
||
JRST BDOUT
|
||
|
||
MCFB: 2 ;MAX NUM FEEDOVERS IN A LINE
|
||
ASETF: PUSHJ P,GETNUM
|
||
SETFR: MOVE A,HK1V
|
||
ADD A,C
|
||
AOS A
|
||
MOVEM A,FDCUT
|
||
MOVEM C,MCFB
|
||
POPJ P,
|
||
|
||
|
||
IFN BOOK,[
|
||
BYMG: MOVE C,[440600,,B]
|
||
MOVEI B,0
|
||
BYMG2: PUSHJ P,RCHA
|
||
CAILE A,40
|
||
CAILE A,140
|
||
JRST BYMG1
|
||
SUBI A,40
|
||
TLNE C,770000
|
||
IDPB A,C
|
||
JRST BYMG2
|
||
|
||
BYMG1: MOVE ZR,B
|
||
MOVEI Q,0
|
||
|
||
BYMG4: CAMN B,BKSMT(Q)
|
||
POPJ P, ;FOUND TAG
|
||
CAMGE Q,BSYMPR
|
||
AOJA Q,BYMG4
|
||
JRST POPJ1 ;TAG NOT THERE
|
||
|
||
BKPUTI: AOS C,BKFS
|
||
BKPUT: CAIL C,BKSS
|
||
ERRTTY [ASCII /BOOK FULL!/]
|
||
IDIVI C,6
|
||
DPB A,BKPT(D)
|
||
POPJ P,
|
||
|
||
BKPT: 360600,,BBK(C)
|
||
300600,,BBK(C)
|
||
220600,,BBK(C)
|
||
140600,,BBK(C)
|
||
60600,,BBK(C)
|
||
600,,BBK(C)
|
||
|
||
ABKERR: MOVEI B,TYO
|
||
ISOUT [.ASCII /LAST V *B!BKLVAR, LAST L *B!BKLLEV
|
||
/]
|
||
POPJ P,
|
||
|
||
BKLVAR: 0 ;LAST SYM WITH V SEEN
|
||
BKLLEV: 0 ;LAST SYM WITH L SEEN
|
||
|
||
BSYMPR: -1
|
||
BKFS: 0
|
||
BOOKF1: 0 ;IN BOOK READIN IN -1
|
||
BKTM1: 0
|
||
BKTM3: 0
|
||
BOOKF3: 0 ;MAKE MOVE FLAG
|
||
|
||
|
||
BKV: PUSHJ P,BYMG
|
||
JRST BKV1 ;MDV
|
||
MOVEM B,BKLVAR
|
||
AOS A,BSYMPR
|
||
CAIL A,BMXS
|
||
ERRTTY [ASCII /BOOK SYM TABLE FULL!/]
|
||
MOVEM B,BKSMT(A)
|
||
MOVE B,BKFS
|
||
HRL B,PLYN
|
||
MOVEM B,BKSMTV(A)
|
||
JRST BKML
|
||
|
||
BKV1: PTTY [ASCII /MDT!/]
|
||
|
||
BKV2: MOVEI A,0
|
||
ROTC ZR,6
|
||
JUMPE A,BKML
|
||
ADDI A,60
|
||
PUSHJ P,TYO
|
||
JRST BKV2
|
||
|
||
BKT: PUSHJ P,BYMG
|
||
JRST BKT1
|
||
PTTY [ASCII /UNDEFINED GO TO!/]
|
||
JRST BKV2
|
||
|
||
BKT1: MOVEI A,76
|
||
PUSHJ P,BKPUTI
|
||
LDB A,[60600,,Q]
|
||
PUSHJ P,BKPUTI
|
||
LDB A,[600,,Q]
|
||
PUSHJ P,BKPUTI
|
||
JRST BKT2
|
||
|
||
BKE: MOVEI A,77
|
||
PUSHJ P,BKPUTI
|
||
|
||
BKT2: SKIPN PLYN
|
||
JRST MNLP2R
|
||
PUSHJ P,UNMOVE
|
||
JRST BKML
|
||
|
||
|
||
BKM: PUSHJ P,BYMG
|
||
JRST BKM1
|
||
PTTY [ASCII /UNDEFINED MULTIPLE END!/]
|
||
JRST BKV2
|
||
|
||
BKM1: MOVEM B,BKLLEV
|
||
BKM1A: HLRZ D,BKSMTV(Q)
|
||
CAMLE D,PLYN
|
||
JRST BKM2
|
||
CAMN D,PLYN
|
||
JRST BKML
|
||
AOS C,BKFS
|
||
MOVEI A,77
|
||
PUSHJ P,BKPUT
|
||
PUSH P,Q
|
||
PUSHJ P,UNMOVE
|
||
POP P,Q
|
||
JRST BKM1A
|
||
|
||
BKM2: PTTY [ASCII /ATTEMPT TO RETURN TO HIGHER PLYN!/]
|
||
JRST BKV1
|
||
|
||
AWBKB: PUSHJ P,AWRB
|
||
MOVE A,BKFS
|
||
IDIVI A,6
|
||
MOVNI A,1(A)
|
||
HRLZS B,A
|
||
PUSHJ P,UWRB
|
||
MOVE A,BBK(B)
|
||
PUSHJ P,UWRB
|
||
AOBJN B,.-2
|
||
MOVE B,BSYMPR
|
||
MOVNI B,1(B)
|
||
HRLZS B
|
||
MOVE A,B
|
||
PUSHJ P,UWRB
|
||
MOVE A,BKSMTV(B)
|
||
PUSHJ P,UWRB
|
||
AOBJN B,.-2
|
||
PUSHJ P,AFILR1
|
||
JRST PSRET
|
||
|
||
ARBKB: PUSHJ P,ARDB
|
||
PUSHJ P,UREDB
|
||
HLRO C,A
|
||
IMULI C,-6
|
||
HRRZM C,BKFS ;SO RIGHT THING WILL HAPPEN ON SUBSEQUENT WRITEOUT
|
||
MOVE B,A
|
||
HLRO ZR,B
|
||
MOVNS ZR
|
||
CAIL ZR,BKSS/6
|
||
PTTY [ASCIZ /BOOK OVERFLOW/]
|
||
PUSHJ P,UREDB
|
||
MOVEM A,BBK(B)
|
||
AOBJN B,.-2
|
||
PUSHJ P,UREDB
|
||
MOVE B,A
|
||
HLRO ZR,B
|
||
MOVNS ZR
|
||
CAIL ZR,BMXS
|
||
PTTY [ASCIZ /BOOK SYMBOL TABLE OVERFLOW/]
|
||
PUSHJ P,UREDB
|
||
MOVEM A,BKSMTV(B)
|
||
AOBJN B,.-2
|
||
IFN TS, .CLOSE UTYIC,
|
||
IFN DECTS,[
|
||
RELEASE UTYIC,
|
||
CLEARM UREADF
|
||
]
|
||
JRST PSRET
|
||
|
||
ACBOOK: SETOM UREADF ;CONTINUE READING BOOK
|
||
JRST ACBOK1
|
||
|
||
ARBOOK: SETOM BSYMPR
|
||
CLEARM BKSMT
|
||
CLEARM BKFS ;RESET BOOK
|
||
ACBOK1: SETOM BOOKF1
|
||
|
||
BKML: MOVE P,[-PDLL,,PDL-1]
|
||
IFN CHEOPS,[
|
||
SKIPGE CKBOOK
|
||
PUSHJ P,CCBKCK ;CHECK BOOK POSITION WITH CHEOPS FOR REASONABLENESS
|
||
]
|
||
PUSHJ P,RMOVE
|
||
JRST .-1
|
||
PUSHJ P,BKFND
|
||
ERRTTY [ASCII /MOVE NOT FOUND!/]
|
||
BKME2: CAIL C,75
|
||
JRST BKME3
|
||
MOVE A,C
|
||
PUSHJ P,BKPUTI
|
||
MOVE A,BKTM1
|
||
PUSHJ P,IMMOVE
|
||
ERRTTY [ASCII /ILLEGAL!/]
|
||
IFN DSPLY, PUSHJ P,DISUP
|
||
JRST BKML
|
||
|
||
BKMM: SETOM BOOKF3
|
||
MOVEM B,BKTM3 ;GET PIECE TO SQUARE FOR MOVE NO IN A
|
||
JRST BKMM2
|
||
|
||
BKFND: CLEARM BOOKF3
|
||
MOVEM A,BKTM1
|
||
BKMM2: MOVEI A,BKME ;RET MOVE NO IN C THAT CORRESP TO STANDARD MOVE IN A
|
||
CMPM: PUSH P,BKF2R ;ENTRY HERE.
|
||
MOVEM A,BKF2R
|
||
MOVEM P,BKTM2
|
||
CLEARM LMGD ;MAKE SURE THAT LMG AT LEAST HAS A CHANCE.
|
||
CLEARM LMGD2
|
||
LDB I,[100,,PLYN]
|
||
PUSHJ P,LMG
|
||
ERRTTY [ASCII /LMG RETURNED!/]
|
||
|
||
BKME: PUSHJ P,LMGXR
|
||
HRRZ A,LGLMST
|
||
AOS A
|
||
SKIPGE BOOKF3
|
||
JRST BKMM1
|
||
LDB T1,[MPC,,BKTM1]
|
||
LDB T2,[MPTO,,BKTM1]
|
||
MOVEI C,0
|
||
BKMEL: CAIN A,1(P)
|
||
JRST BKME5
|
||
HRRZ B,(A)
|
||
CAIL B,376
|
||
JRST BKME1
|
||
CAME B,T2
|
||
JRST BKMEL1
|
||
HLRZ B,(A)
|
||
CAMN B,T1
|
||
JRST BKME4
|
||
BKMEL1: ADDI A,NWDPM
|
||
AOJA C,BKMEL
|
||
|
||
BKME4: MOVE A,BKTM1
|
||
CMPMX1: MOVE P,BKTM2
|
||
POP P,BKF2R
|
||
JRST POPJ1
|
||
|
||
BKME5: MOVE A,BKTM1
|
||
CMPMX: MOVE P,BKTM2
|
||
POP P,BKF2R
|
||
POPJ P,
|
||
|
||
BKME1: LDB D,[300,,BKTM1]
|
||
JUMPE D,BKMEL1
|
||
CAIG D,2
|
||
CAIE B,375(D)
|
||
JRST BKMEL1
|
||
JRST BKME4 ;FOUND MOVE
|
||
|
||
|
||
BKMM1: REPEAT NWDPM,ADD A,BKTM3
|
||
CAIL A,1(P)
|
||
ERRTTY [ASCII /MOVE NUMBER TOO HIGH--BKMM!/]
|
||
MOVE B,(A)
|
||
JRST BKME5
|
||
|
||
BKME3: PUSH P,C
|
||
MOVEI A,75
|
||
PUSHJ P,BKPUTI
|
||
POP P,C
|
||
SUBI C,75
|
||
JRST BKME2
|
||
|
||
IFN CHEOPS,[
|
||
CCBKCK: MMSAVAC
|
||
CLEARM CHXSTM ;CHECK BOOK POSITION FOR REASONABILITY WITH CHEOPS
|
||
MOVEI A,20000 ;INITIALIZE ALPHA AND BETA
|
||
MOVNM A,CHXIA
|
||
MOVEM A,CHXIB
|
||
MOVEI C,3
|
||
MOVEM C,CHXD
|
||
CCBKC1: PUSHJ P,ACLPS3
|
||
PUSHJ P,ACSTRT
|
||
PUSHJ P,HCHGV
|
||
MOVM R,CHXVAL
|
||
CAMGE R,CKBKEP
|
||
JRST CCBKCX ;OK
|
||
AOS C,CHXD
|
||
CAIG C,5
|
||
JRST CCBKC1 ;IF DOESNT CHECK OUT, TRY DEEPER SEARCH
|
||
PUSHJ P,DISUP
|
||
PUSHJ P,ACTPR
|
||
PUSHJ P,TYITTY
|
||
SETOM UREADF ;START READING BOOK AGAIN
|
||
CCBKCX: MMRSAC
|
||
POPJ P,
|
||
]
|
||
]
|
||
|
||
BKF2R: 0 ;FLAG TO LMG TO RETURN TO VARIOUS HACKS IF .NE. 0
|
||
BKTM2: 0 ;PDL LVL ASSOC WITH ABOVE
|
||
CKBOOK: 0 ;-1 REALLY USING CHEOPS TO CHECK BOOK FOR REASONABILITY
|
||
CKBKEP: 20 ;THRESHHOLD FOR BOOK CHECKING. IF ONE SIDE HAS ADVANTAGE MORE THAN
|
||
; THIS, SOMEONE MADE A BLUNDER.
|
||
|
||
ADRAW: MOVEI B,TYO
|
||
MOVE T1,HACKVV
|
||
MOVE T2,GSW
|
||
CAIE T2,MNLPA
|
||
CAIN T2,HACK5
|
||
JRST RMERR
|
||
CAIE T2,HACK4
|
||
MOVNS T1
|
||
MOVE T2,PLYN
|
||
CAIG T2,20
|
||
JRST ADRWD
|
||
CAIG T2,50
|
||
CAIL T1,105
|
||
SKIPA
|
||
JRST ADRWD
|
||
CAMG T1,[-105]
|
||
JRST ADRWD
|
||
SOUT [ASCII / ACCEPT !/]
|
||
POPJ P,
|
||
|
||
ADRWD: SOUT [ASCII / DECLINE !/]
|
||
POPJ P,
|
||
|
||
IFE DECTS,[
|
||
IFN DEC-TS+KLNTS, PILPT: POPJ P,
|
||
IFN TS,[
|
||
PILPT: AOS LINEPOS
|
||
CAIN A,15
|
||
CLEARM LINEPOS
|
||
.IOT LPTC,A
|
||
POPJ P,
|
||
]
|
||
]
|
||
|
||
|
||
IFN DECTS,[
|
||
PILPT: SKIPN LPTINT
|
||
POPJ P,
|
||
AOS LINEPOS
|
||
CAIN A,15
|
||
SETZM LINEPOS
|
||
SOSG LPTO+2
|
||
OUTPUT LPTC,
|
||
IDPB A,LPTO+1
|
||
POPJ P,
|
||
]
|
||
|
||
ASPOT: SKIPN PLYN ;SETS ODDS FROM STRING ARGUMENT AFTER RESETING
|
||
JRST ASPOT1
|
||
PUSHJ P,UNMOVE ;P N B R Q FLUSH KBP QN QB QR Q FOR SIDE SET TO
|
||
JRST ASPOT ;V CHANGES SIDE. INITIALLY WHITE
|
||
ASPOT1: PUSHJ P,BDINI ;R ALSO MOVES QRP-R3
|
||
IFN DSPLY, PUSHJ P,DISUP
|
||
CLEARM TMSPOT
|
||
MOVE Q,[TMSPOT,,TMSPOT+1]
|
||
BLT Q,TMSPOT+3
|
||
MOVE Q,[440700,,TMSPOT]
|
||
SKIPE GME
|
||
JRST ASPOTX
|
||
SETZM ASSIDE
|
||
ASPOT2: PUSHJ P,RCHA
|
||
CAIGE A,40
|
||
JRST ASPOTX
|
||
CAIN A,40
|
||
JRST ASPOT2
|
||
MOVEI T1,0
|
||
IRPC X,,BNPQRV
|
||
CAIN A,"X
|
||
JRST ASPOT!X
|
||
TERMIN
|
||
ASPOT3: PUSHJ P,QMTYO
|
||
JRST ASPOT2
|
||
|
||
ASSIDE: 0
|
||
|
||
SPOTSW: ASCII /SPOT /
|
||
TMSPOT: BLOCK 4
|
||
|
||
ASPOTR: SKIPE ASSIDE
|
||
JRST ASPOT4
|
||
MOVEI T1,4*BW+8
|
||
MOVEM T1,PIECEL-PIECE+WKR-1
|
||
SETZM BOARD+3*BW+8 ;PUSH QRP
|
||
MOVEI T1,WKR-1
|
||
MOVEM T1,BOARD+4*BW+8
|
||
MOVEI T1,3 ;NEW RANK
|
||
MOVEM T1,PRANK+WKR-1-PIECE
|
||
MOVEM T1,RPRANK+WKR-1-PIECE
|
||
AOS NMOVES+WKR-1-PIECE
|
||
JRST ASPOT5
|
||
|
||
ASPOT4: MOVEI T1,7*BW+8
|
||
MOVEM T1,PIECEL-PIECE+WKR-1+BPV-1
|
||
MOVEI T1,3
|
||
MOVEM T1,RPRANK+WKR-1-PIECE+BPV-1
|
||
MOVEI T1,6
|
||
MOVEM T1,PRANK+WKR-1-PIECE+BPV-1
|
||
SETZM BOARD+8*BW+8
|
||
MOVEI T1,WKR-1+BPV-1
|
||
MOVEM T1,BOARD+7*BW+8
|
||
AOS NMOVES+WKR-1+BPV-1-PIECE
|
||
ASPOT5: MOVEI T1,WQR-<WKR-6>
|
||
ASPOTP: ADDI T1,<WKR-6>-<WKING+2>
|
||
ASPOTB: ADDI T1,<WKING+2>-<WKING+3>
|
||
ASPOTN: ADDI T1,<WKING+3>-<WKING+1>
|
||
ASPOTQ: ADDI T1,<WKING+1>
|
||
SKIPE ASSIDE
|
||
ADDI T1,BPV-1
|
||
SKIPN T2,PIECEL-PIECE(T1)
|
||
JRST ASPOT3
|
||
IDPB A,Q
|
||
MOVN A,RPVAL-PIECE(T1)
|
||
ADDM A,@PBALP-PIECE(T1)
|
||
SOS @PCCPNR-PIECE(T1)
|
||
SOS @NPCPT-PIECE(T1)
|
||
SOS @NPCP1-PIECE(T1)
|
||
SETZM PIECEL-PIECE(T1)
|
||
SETZM BOARD(T2)
|
||
IFN BOOK, SETZM UBKF ;BOOK BITES WITH ODDS
|
||
IFN DSPLY, PUSHJ P,DISUP
|
||
JRST ASPOT2
|
||
|
||
ASPOTV: IDPB A,Q
|
||
SETCMM ASSIDE
|
||
JRST ASPOT2
|
||
|
||
ASPOTX: PUSHJ P,.CAT1
|
||
JRST ARS1
|
||
|
||
IFN TS,[
|
||
FSTEP: MOVE A,PLYN ;STEP TO NEXT POSITION IN GAME READ. DO IT BY RESET ING,
|
||
AOS A ; READING IN GAME, THEN RESETING TO DESIRED PLY #
|
||
MOVEM A,FSTEM1 ;DESIRED PLY #
|
||
PUSHJ P,ROPNRD
|
||
JRST FNF
|
||
PUSHJ P,ARS0
|
||
SETOM UREADF
|
||
MOVEI A,FSTEP1
|
||
MOVEM A,EOFTRP
|
||
JRST MNLP ;FORCE RETURN, ALLOW GAME TO READ IN AGAIN
|
||
; NO REDISPLAY, THO.
|
||
FSTEP1: MOVE A,FSTEM1
|
||
MOVEM A,UNPLYN
|
||
PUSHJ P,ARS3
|
||
JRST MNLP2
|
||
|
||
FSTEM1: 0
|
||
]
|
||
|
||
ARESET: CLEARM HACKVV
|
||
SKIPL GME
|
||
JRST ARS2
|
||
ARS0: SETZM UNPLYN
|
||
IFE DECTS,[
|
||
SETOM MSPC
|
||
CLEARM LPCSLW ;DONT ALLOW PARAMETER CHANGES IN FIRST FEW MOVES
|
||
]
|
||
ARS3: MOVE A,PLYN
|
||
CAMG A,UNPLYN
|
||
JRST ARS1
|
||
PUSHJ P,UNMOVE
|
||
JRST ARS3
|
||
|
||
UNPLYN: 0
|
||
|
||
ARS1: SETOM CLKCOK
|
||
CLEARM WCLOCK
|
||
CLEARM BCLOCK
|
||
CLEARM QDCOF
|
||
CLEARM LPSLSH ;LAST PLY # OUTPUT WITH BACKSLASHES ON WALLP
|
||
; MOVN ZR,PDV+WKING+1-PIECE
|
||
; IMUL ZR,PINVF+WKING+1-PIECE
|
||
; ADDM ZR,@PDVPNR+WKING+1-PIECE
|
||
; MOVN ZR,PDV+BKING+1-PIECE
|
||
; IMUL ZR,PINVF+BKING+1-PIECE
|
||
; ADDM ZR,@PDVPNR+BKING+1-PIECE
|
||
; CLEARM PINVF+WKING+1-PIECE
|
||
; CLEARM PINVF+BKING+1-PIECE
|
||
IFN TS,[
|
||
CLEARM WCLOCK+1
|
||
CLEARM BCLOCK+1
|
||
]
|
||
IFE DECTS,[
|
||
MOVEI A,OCLOCK
|
||
MOVEM A,CURCLK
|
||
]
|
||
MOVEI A,MNLPA
|
||
MOVEM A,GSW
|
||
PUSHJ P,.CAT1
|
||
IFN BOOK,CLEARM BKLFT
|
||
POPJ P,
|
||
|
||
ARS2: PUSHJ P,GETNUM
|
||
LSH C,1
|
||
MOVEM C,UNPLYN
|
||
JRST ARS3
|
||
|
||
.PNT: 0
|
||
PNT: PUSHJ P,GETNUM
|
||
PNT2: MOVEM C,.PNT
|
||
MOVEI A,PILPT
|
||
SKIPN C
|
||
MOVEI A,TYO
|
||
SKIPGE C
|
||
MOVEI A,PPA
|
||
MOVEM A,PNTS
|
||
IFN TS,[
|
||
SKIPLE C
|
||
JRST WALP2
|
||
SKIPN WALLP
|
||
.CLOSE LPTC,
|
||
] JRST PSRET
|
||
|
||
PNTS: TYO
|
||
|
||
|
||
ACLEAR: PUSHJ P,ARESET ;CLEAR BOARD COMPLETELY
|
||
MOVE B,[-NPC,,1]
|
||
ACLR1: MOVE A,PIECEL(B)
|
||
JUMPE A,ACLR2
|
||
CLEARM BOARD(A)
|
||
CLEARM PIECEL(B)
|
||
SOS @NPCPT(B)
|
||
SOS @NPCP1(B)
|
||
SOS @PCCPNR(B)
|
||
LDB I,[430100,,PIECE(B)]
|
||
MOVN T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
SKIPGE RFPCS(B)
|
||
XCT MMT5+1(I)
|
||
ACLR2: AOBJN B,ACLR1
|
||
.CAT1X: PUSHJ P,ATEV
|
||
JRST .CAT1
|
||
|
||
IFN UTAPE,[
|
||
AXPOS: PUSHJ P,AWRT
|
||
MOVEI B,UWD
|
||
PUSHJ P,XBDOUT
|
||
JRST AFILR1
|
||
|
||
AWPOS: PUSHJ P,AWRT
|
||
MOVEI B,UWD
|
||
SOUT [ASCIZ \RESET
|
||
RPOS
|
||
\]
|
||
PUSHJ P,BDOUT
|
||
LDB I,[100,,PLYN]
|
||
XCT WSIDE(I)
|
||
JRST AFILR1
|
||
|
||
]
|
||
WSIDE: SOUT [ASCIZ /SIDE W
|
||
/]
|
||
SOUT [ASCIZ /SIDE B
|
||
/]
|
||
|
||
ARPOS: SKIPE PLYN
|
||
JRST QMTYO
|
||
SETOM GME
|
||
PUSHJ P,ACLEAR
|
||
MOVEI A,7
|
||
MOVEM A,RKN
|
||
ARPOS2: MOVEI A,7
|
||
MOVEM A,FNN
|
||
ARPOS1: PUSHJ P,RRSYL
|
||
MOVE A,RKN
|
||
IMULI A,BW
|
||
ADD A,FNN
|
||
ADDI A,2*BW+1
|
||
PUSHJ P,ARPUT
|
||
SKIPGE GME
|
||
JRST ARPOS3
|
||
SOSL FNN
|
||
JRST ARPOS1
|
||
PUSHJ P,TYI
|
||
ARPOS3: SOSL RKN
|
||
JRST ARPOS2
|
||
SETOM POSRDI
|
||
JRST .CAT1X
|
||
|
||
|
||
RRSYL: MOVE C,[440600,,B]
|
||
CLEARB B,GME
|
||
RRSYL1: PUSHJ P,TYI
|
||
CAIN A,12
|
||
JRST RRSYL1
|
||
CAIG A,40
|
||
JRST RRSYL2
|
||
SUBI A,40
|
||
TLNE C,770000
|
||
IDPB A,C
|
||
JRST RRSYL1
|
||
|
||
RRSYL2: CAIN A,15
|
||
SETOM GME
|
||
JUMPE B,CPOPJ
|
||
MOVSI C,ARPS1-ARPS2
|
||
RRSYL3: CAMN B,ARPST(C)
|
||
POPJ P,
|
||
AOBJN C,RRSYL3
|
||
MOVEI B,0
|
||
POPJ P,
|
||
|
||
ARPUT: JUMPE B,CPOPJ
|
||
LDB Q,[100,,PLYN]
|
||
MOVE B,ARPS1(C)
|
||
TLNE B,40000
|
||
JRST APUT5 ;GHOST
|
||
TLNE B,100000
|
||
POPJ P,
|
||
TLNE B,200000
|
||
JRST APUT4 ;BISHOP
|
||
APUT3: MOVE D,(B)
|
||
SKIPN PIECEL-PIECE(D)
|
||
JRST APUT1 ;FOUND PLACE TO PUT IT
|
||
JUMPL D,APUT2
|
||
AOJA B,APUT3
|
||
|
||
APT2T: CAIN B,ARWPP+7
|
||
CAMN B,[SETZ ARBPP+7]
|
||
|
||
APUT2:; SKIPL RPIECE-PIECE(D)
|
||
; XCT APT2T(I)
|
||
ERRTTY [ASCIZ /CANT PUT PIECE /]
|
||
; LDB I,[430100,,(D)]
|
||
; MOVE B,ARPS1+10.(I) ;PUT PAWN
|
||
; PUSHJ P,APUT3
|
||
; MOVEI B,-PIECE(D)
|
||
; SKIPE @GAMP
|
||
; PUSHJ P,ASIDEB
|
||
;APUTC: MOVEI A,-2(C)
|
||
; LSH A,-1
|
||
; MOVE D,PIECEL(B)
|
||
; DPB B,[MPC,,A]
|
||
; DPB D,[MPTO,,A]
|
||
; DPB I,[420100,,A]
|
||
; SETOM DBSUPS
|
||
; PUSH P,ICSW
|
||
; SETZM ICSW
|
||
; PUSH P,Q
|
||
; PUSHJ P,MMS5P
|
||
; ERRTTY [ASCIZ /PUT?/] ;SHOULD BE SKIPPED OVER
|
||
; POP P,Q
|
||
; POP P,ICSW
|
||
; SETZM DBSUPS
|
||
; SETOM MOVST
|
||
; LDB A,[100,,PLYN]
|
||
; CAMN A,Q
|
||
; POPJ P,
|
||
ASIDEB: AOS A,GAMP
|
||
SETZM (A)
|
||
SETZM GHK1-GAME(A)
|
||
MOVSI ZR,(SETZ)
|
||
MOVEM ZR,GAMEV-GAME(A)
|
||
AOS T1,PLYN
|
||
MOVEM T1,LPSLSH ;TELL HACK1 NOT TO PRINT THIS
|
||
POPJ P,
|
||
|
||
APUT1: HRRZM A,PIECEL-PIECE(D)
|
||
HRRZM D,BOARD(A)
|
||
LDB T2,[BFILE,,BPREL(A)]
|
||
MOVEM T2,PFILE-PIECE(D)
|
||
LDB T2,[BRANK,,BPREL(A)]
|
||
MOVEM T2,PRANK-PIECE(D)
|
||
SKIPGE (D)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK-PIECE(D)
|
||
AOS @NPCPT-PIECE(D)
|
||
AOS @NPCP1-PIECE(D)
|
||
AOS @PCCPNR-PIECE(D)
|
||
MOVE T2,RPVAL-PIECE(D)
|
||
ADDM T2,@PBALP-PIECE(D)
|
||
LDB I,[430100,,(D)]
|
||
CLEARM NMOVES-PIECE(D)
|
||
SKIPGE LMGT-PIECE(D)
|
||
JRST APUT6
|
||
MOVE T2,RPRANK-PIECE(D)
|
||
SOJN T2,APUT7A ;NOT ON ITS FIRST RANK
|
||
MOVE ZR,PFILE-PIECE(D)
|
||
LDB T2,[PTID,,PIECE-PIECE(D)]
|
||
CAMN ZR,APUTT1(T2)
|
||
JRST APUT7
|
||
CAME ZR,APUTT2(T2)
|
||
APUT7A: AOS NMOVES-PIECE(D) ;NOT ON "HOME" SQUARE
|
||
APUT7: SKIPGE RFPCS-PIECE(D)
|
||
XCT UMT5+1(I)
|
||
SKIPGE RPIECE-PIECE(D)
|
||
AOS NMOVES-PIECE(D) ;NO CASTLING LEAVE THIS IN UNTIL ROOKS GUARENTTED TO
|
||
;GET ASSIGNED RIGHT PIECE NOS
|
||
IFN BOOK, SETZM UBKF ;BOOK LOSES
|
||
POPJ P,
|
||
|
||
APUT6: XCT APUTO(I) ;SKIP IF PAWN ON SECOND RANK
|
||
AOS NMOVES-PIECE(D)
|
||
JRST APUT7
|
||
|
||
APUTT1: -1 ;"HOME" FILE FOR PC
|
||
1
|
||
2
|
||
0
|
||
4
|
||
3
|
||
|
||
APUTT2: 0 ;OTHER HOME FILE
|
||
6
|
||
5
|
||
7
|
||
-1
|
||
-1
|
||
|
||
APUTO: CAIL A,4*BW
|
||
CAIGE A,8*BW
|
||
|
||
APUT4: LDB D,[BCOLR,,BPREL(A)] ;SELECT APPRO COLOR B
|
||
ADD B,D
|
||
JRST APUT3
|
||
|
||
APUT5: LDB D,[BRANK,,BPREL(A)]
|
||
SKIPGE B
|
||
MOVE D,REVERS(D)
|
||
CAIN D,3
|
||
SKIPE GHLOC
|
||
ERRTTY [ASCIZ /CANT PUT GHOST/]
|
||
HRRZM A,GHLOC
|
||
MOVEI D,1
|
||
SKIPGE B
|
||
MOVNI D,1
|
||
MOVEM D,GHSD
|
||
SETOM MOVST ;DONT STORE MOVE FOR GHOST
|
||
POPJ P,
|
||
|
||
APUT: PUSHJ P,RRSYL
|
||
JUMPE B,QMTYO
|
||
PUSH P,B
|
||
PUSH P,C
|
||
CLEARM SIDE
|
||
PUSHJ P,GSYL
|
||
POP P,C
|
||
POP P,B
|
||
SKIPGE BOARD(A)
|
||
MOVSS A
|
||
SKIPE BOARD(A)
|
||
JRST QMTYO
|
||
SETZM MOVST
|
||
PUSHJ P,ARPUT
|
||
SKIPE MOVST
|
||
JRST .CAT1X
|
||
SKIPE @GAMP
|
||
PUSHJ P,ASIDEB
|
||
MOVEI B,-PIECE(D)
|
||
MOVE D,PIECEL(B)
|
||
DPB B,[MPC,,@GAMP]
|
||
DPB D,[MPTO,,@GAMP]
|
||
DPB I,[420100,,@GAMP]
|
||
LDB A,[100,,PLYN]
|
||
CAME A,Q
|
||
PUSHJ P,ASIDEB
|
||
JRST .CAT1X
|
||
|
||
MOVST: 0 ;-1 IF MOVE ALREADY STORED
|
||
|
||
ARPST: SIXBIT /WK/
|
||
SIXBIT /BK/
|
||
SIXBIT /WQ/
|
||
SIXBIT /BQ/
|
||
SIXBIT /WR/
|
||
SIXBIT /BR/
|
||
SIXBIT /WB/
|
||
SIXBIT /BB/
|
||
SIXBIT /WN/
|
||
SIXBIT /BN/
|
||
SIXBIT /WP/
|
||
SIXBIT /BP/
|
||
SIXBIT /--/
|
||
SIXBIT /**/
|
||
SIXBIT /WG/
|
||
SIXBIT /BG/
|
||
|
||
ARPS1: ARWKP
|
||
SETZ ARBKP
|
||
ARWQP
|
||
SETZ ARBQP
|
||
ARWRP
|
||
SETZ ARBRP
|
||
200000,,ARWBP
|
||
600000,,ARBBP
|
||
ARWNP
|
||
SETZ ARBNP
|
||
ARWPP
|
||
SETZ ARBPP
|
||
100000,,
|
||
100000,,
|
||
40000,,
|
||
440000,,
|
||
|
||
ARPS2:
|
||
ARWKP: SETZ WKING
|
||
ARBKP: SETZ BKING
|
||
ARWQP: SETZ WKING+1
|
||
ARBQP: SETZ BKING+1
|
||
ARWRP: WKR
|
||
SETZ WQR
|
||
ARBRP: BKR
|
||
SETZ BQR
|
||
ARWBP: SETZ WKR+2 ;WHITE SQ B
|
||
SETZ WQR-2 ;BLACK SQ B
|
||
ARBBP: SETZ BQR-2 ;WHITE SQ B
|
||
SETZ BKR+2 ;BLACK SQ B
|
||
ARWNP: WKR+1
|
||
SETZ WQR-1
|
||
ARBNP: BKR+1
|
||
SETZ BQR-1
|
||
ARWPP: REPEAT 7,PIECE+1+.RPCNT
|
||
SETZ PIECE+1+7
|
||
ARBPP: REPEAT 7,PIECE+NPCS+1+.RPCNT
|
||
SETZ PIECE+NPCS+1+7
|
||
|
||
RKN: 0
|
||
FNN: 0
|
||
|
||
TXSID: "W
|
||
"B
|
||
"W
|
||
|
||
ASIDE: LDB I,[100,,PLYN]
|
||
SKIPE EQSGNF
|
||
JRST ASIDEA
|
||
PUSHJ P,RCHA
|
||
CAIN A,40
|
||
JRST .-2
|
||
CAMN A,TXSID(I)
|
||
POPJ P,
|
||
CAME A,TXSID+1(I)
|
||
JRST RMERR
|
||
JRST ASIDEB
|
||
|
||
ASIDEA: MOVE A,TXSID(I)
|
||
PUSHJ P,TYO
|
||
POPJ P,
|
||
|
||
UNPUT: JUMPE B,POPIJ
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC1
|
||
SOS @PCCPNR(B)
|
||
SOS @NPCPT(B)
|
||
SOS @NPCP1(B)
|
||
SETZM BOARD(T)
|
||
SETZM PIECEL(B)
|
||
MOVN T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
SKIPGE RFPCS(B)
|
||
XCT MMT5+1(I)
|
||
JRST POPIJ
|
||
|
||
WALLP: 0
|
||
AWALLP: PUSHJ P,GETNUM
|
||
MOVEM C,WALLP
|
||
IFE TS+DECTS, JRST PSRET
|
||
IFE DECTS,[
|
||
IFN TS,[ JUMPE C,AWALP1
|
||
JUMPL C,AWALP3 ;TO DISK
|
||
WALP2: .OPEN LPTC,LPTF
|
||
SKIPA
|
||
POPJ P,
|
||
SETZM WALLP
|
||
SKIPG PNT
|
||
JRST GERR
|
||
MOVEI C,0
|
||
PUSHJ P,PNT2
|
||
JRST GERR
|
||
|
||
AWALP3: .OPEN LPTC,LPTDSK
|
||
JRST GERR
|
||
POPJ P,
|
||
|
||
LPTDSK: (1+SIXBIT /DSK/)
|
||
SIXBIT /WALL/
|
||
SIXBIT />/
|
||
|
||
LPTF: (1+SIXBIT /LPT/)
|
||
SIXBIT /WALL/
|
||
SIXBIT /PAPER/
|
||
|
||
AWALP1: SKIPG .PNT
|
||
.CLOSE LPTC,
|
||
JRST PSRET
|
||
]
|
||
|
||
PPA: IFE DEC-TS,[SKIPE WALLP
|
||
PUSHJ P,PILPT]
|
||
UWD:
|
||
IFN UTAPE,[
|
||
IFE TS,[
|
||
PUSHJ P,UWR"
|
||
PTTY [ASCII /TAPE FULL!/]
|
||
POPJ P,
|
||
|
||
UWRB: PUSHJ P,.UWR"
|
||
PTTY [ASCII /TAPE FULL!/]
|
||
POPJ P,
|
||
]
|
||
]
|
||
IFN TS,[
|
||
UWRB: .IOT UTYOC,A
|
||
POPJ P,
|
||
]
|
||
]
|
||
IFN DECTS,[
|
||
SETZM LPTINT
|
||
JUMPE C,AWALP1
|
||
INIT LPTC,1
|
||
SIXBIT /LPT/
|
||
XWD LPTO,0
|
||
JRST GERR
|
||
SETZM LPTFF+2
|
||
SETZM LPTFF+3
|
||
ENTER LPTC,LPTFF
|
||
JRST GERR
|
||
MOVEI T1,LPTBUF
|
||
EXCH T1,JOBFF
|
||
OUTBUF LPTC,1
|
||
MOVEM T1,JOBFF
|
||
SETOM LPTINT
|
||
JRST PSRET
|
||
AWALP1: RELEASE LPTC,
|
||
JRST PSRET
|
||
|
||
LPTINT: 0
|
||
LPTO: BLOCK 3
|
||
LPTFF: SIXBIT /WALLPA/
|
||
SIXBIT /PER/
|
||
0
|
||
0
|
||
|
||
LPTBUF: BLOCK 203
|
||
|
||
PPA: SKIPE WALLP
|
||
PUSHJ P,PILPT
|
||
UWD:UWRB:
|
||
SKIPN UTINT
|
||
POPJ P,
|
||
SOSG UTYOO+2
|
||
OUTPUT UTYOC,
|
||
IDPB A,UTYOO+1
|
||
POPJ P,
|
||
|
||
;UWRB: JUMPGE A,CPOPJ
|
||
; PUSH P,A
|
||
; MOVE A,(A)
|
||
; PUSHJ P,UWD
|
||
; POP P,A
|
||
; AOBJN A,UWRB
|
||
; POPJ P,
|
||
]
|
||
|
||
|
||
AKPTR: PUSHJ P,GETNUM ;"CRITICAL POSITION" TRACE MODE
|
||
MOVEI I,3
|
||
JUMPE C,AKPU1 ;UNTRACE
|
||
EXCH C,AKPTSW
|
||
JUMPN C,CPOPJ ;TRACE PATCHES ALREADY IN
|
||
MOVE R,[-KPCHL,,KPATCH-1]
|
||
PUSHJ P,ATRL
|
||
POPJ P,
|
||
|
||
AKPU1: PUSHJ P,AUTR
|
||
POPJ P,
|
||
|
||
AKPTSW: 0
|
||
|
||
KPCHL==100
|
||
KPATCH: BLOCK KPCHL ;BLOCK USED FOR KPTR MODE.
|
||
|
||
TRTYO: PUSH P,A
|
||
HRRZ A,TRTBFP
|
||
CAIL A,TRTBF+TRTBSZ
|
||
JRST POPAJ
|
||
POP P,A
|
||
IDPB A,TRTBFP
|
||
POPJ P,
|
||
|
||
TRTBFP: 440700,,TRTBF
|
||
TUTSPF: 0 ;SETOM ED IF STUFF HAS APPEARED IN TRTBF
|
||
|
||
TRTBSZ==40 ;SIZE OF TRACE TTY OUTPUT BUFFER IN WDS
|
||
|
||
TRTBF: BLOCK TRTBSZ+1
|
||
|
||
ATRACE: SKIPL GME
|
||
TDZA I,I
|
||
MOVEI I,1
|
||
MOVEM I,TRCSW1
|
||
SKIPGE GME
|
||
JRST ASTRC5 ;TRACE STATEV
|
||
PUSHJ P,RMOVE
|
||
JRST MNLP2R
|
||
LDB T1,[MPC,,A]
|
||
MOVEM T1,TPIECE
|
||
LDB T1,[MPTO,,A]
|
||
MOVEM T1,TSQ
|
||
MOVE I,TRCSW1
|
||
ASTRC1: MOVE R,[-TPCHL,,TPATCH-1]
|
||
AOSE TSSW
|
||
ERRTTY [ASCIZ /ALREADY PATCHED?/]
|
||
PUSHJ P,ATRL
|
||
JUMPN I,ATRC1
|
||
MOVE T1,[JRST ATRSS1]
|
||
EXCH T1,TRS1
|
||
MOVEM T1,ITRS1
|
||
MOVE T1,[JRST ATRSS2]
|
||
EXCH T1,TRS2
|
||
MOVEM T1,ITRS2
|
||
ATRC1: JUMPN I,ASTRC4 ;STATEV TRACE, OR AFTER HACK.
|
||
MOVEI A,LPEXIT
|
||
MOVEM A,BKF2R
|
||
PUSH P,HK1V ;STANDARD PMG TRACE MODE
|
||
PUSH P,NHSW
|
||
SETOM NHSW ;SAVE H.T.
|
||
PUSHJ P,HACK1
|
||
POP P,NHSW
|
||
POP P,HK1V
|
||
MOVE I,TRCSW1
|
||
MOVE T1,ITRS1
|
||
MOVEM T1,TRS1
|
||
MOVE T1,ITRS2
|
||
MOVEM T1,TRS2
|
||
ASTRC3: PUSHJ P,AUTR
|
||
SETOM TSSW
|
||
CAIG I,1
|
||
JRST MNLP
|
||
POPJ P,
|
||
|
||
ASTRC5: MOVE S,PCBAL
|
||
ADD S,PNBAL
|
||
ADD S,PCBAL+1
|
||
ADD S,PNBAL+1
|
||
MOVEM S,PCRAT1
|
||
MOVE S,PCBAL
|
||
SUB S,PCBAL+1
|
||
MOVEM S,PCRAT2
|
||
MOVE S,PNBAL
|
||
SUB S,PNBAL+1
|
||
MOVEM S,PNRAT2
|
||
JRST ASTRC1
|
||
|
||
AUTR: MOVE T1,ATRTT1(I) ;UNTRACE LOOP
|
||
AUTR1: HLRZ T2,@ATRTT2(I) ;UNTRACE
|
||
LDB C,[331100,,-1(T2)]
|
||
CAIN C,JRST_-27.
|
||
JRST AUTR2
|
||
MOVE C,TUUT-4(C)
|
||
DPB C,[271500,,-1(T2)]
|
||
AUTR3: AOBJN T1,AUTR1
|
||
POPJ P,
|
||
|
||
AUTR2: HRRZ C,-1(T2)
|
||
MOVE C,1(C)
|
||
MOVEM C,-1(T2)
|
||
JRST AUTR3
|
||
|
||
|
||
ATRL: MOVE T1,ATRTT1(I) ;PATCH LOOP PUSH POINTER TO PATCH SPACE ALREADY IN R
|
||
ATRL1: HLRZ T2,@ATRTT2(I)
|
||
CAIN I,3
|
||
JRST [ MOVSI C,(TSOUT) ;USE TSOUT S IN BUFFERED TRACE MODE S
|
||
JRST ATRL1C]
|
||
LDB C,[271500,,-1(T2)]
|
||
MOVSI D,-LTUUT
|
||
CAMN C,TUUT(D)
|
||
JRST ATRL2 ;RIGHT FLAVOR, REPLACE WITH UUO
|
||
AOBJN D,.-2
|
||
ATRL1B: MOVSI C,(12000,,) ;UUO 12 JUST PRINTS HACK
|
||
ATRL1C: HRRI C,@ATRTT2(I) ;INSERT PATCH
|
||
PUSH R,C
|
||
MOVSI D,(JRST)
|
||
HRR D,R
|
||
EXCH D,-1(T2)
|
||
PUSH R,D ;STORE PATCHED INST IN PATCH SPACE
|
||
ADD T2,[JRST]
|
||
PUSH R,T2 ;STORE RETURN
|
||
AOS T2
|
||
LDB C,[410300,,D]
|
||
CAIE C,3
|
||
CAIN C,6
|
||
PUSH R,T2 ;PATCHED INST MIGHT SKIP, STORE RETURN+1
|
||
ATRL3: AOBJN T1,ATRL1
|
||
POPJ P,
|
||
|
||
ATRL2: MOVEI D,4(D)
|
||
DPB D,[331100,,-1(T2)]
|
||
JRST ATRL3
|
||
|
||
ATRSS1: SETOM TPSW
|
||
HRRZ T1,B
|
||
CAMN A,TSQ
|
||
CAME T1,TPIECE
|
||
CLEARM TPSW
|
||
SKIPE TPSW
|
||
TM: JFCL
|
||
ITRS1: 0
|
||
JRST TRS1 1
|
||
|
||
ATRSS2: CLEARM TPSW
|
||
HRRZ T1,B
|
||
SKIPE TPIECE
|
||
CAMN T1,TPIECE
|
||
TP: SETOM TPSW
|
||
ITRS2: 0
|
||
JRST TRS2+1
|
||
|
||
ASTRC4: SETOM TPSW
|
||
CAIL I,2
|
||
POPJ P,
|
||
CLEARM CPCDVL
|
||
CLEARM PDVDF
|
||
PUSHJ P,STVL4
|
||
ATRAF1: RS TOTAL SUPER STATIC POSITION EVALUATION,MOVE I,TRCSW1
|
||
JRST ASTRC3
|
||
|
||
TPIECE: 0 ;PIECE MAKING MOVE TO BE TRACED
|
||
TSQ: 0 ;SQUARE ITS MOVING TO
|
||
|
||
TSSW: -1 ;-1 NORMAL 0 OR > CLOBBERED
|
||
TPSW: 0 ;-1 IF DESIRED MOVE IN PROGRESS
|
||
TRCSW1: 0 ;0 TRACING P MOVE GEN 1 STATEV 2 AFTER HACK
|
||
; 3 "CRITICAL POSITION" TRACE MODE (DOES NOT GET STORED IN TRCSW1,
|
||
; BUT USED TO REF TUUT, ETC)
|
||
|
||
TPCHL==200
|
||
TPATCH: BLOCK TPCHL ;SPACE FOR PATCHES TRACE PUTS IN
|
||
|
||
TUUT: <MOVEI R,>_-<18.+5> ;UUO 4
|
||
<ADDI R,>_-23.
|
||
<SUBI R,>_-23.
|
||
<MOVE R,>_-23.
|
||
<ADD R,>_-23.
|
||
<SUB R,>_-23.
|
||
|
||
LTUUT==.-TUUT
|
||
|
||
|
||
ATRTT1: -LTRT,,
|
||
-LSTRT,,
|
||
-LSTRT,,
|
||
-LTTRT,,
|
||
|
||
ATRTT2: TRT(T1)
|
||
STRT(T1)
|
||
STRT(T1)
|
||
TTRT(T1)
|
||
|
||
ATRTT3: TRT(C)
|
||
STRT(C)
|
||
STRT(C)
|
||
TTRT(C)
|
||
|
||
IFE DECTS,[
|
||
TIMIN: CLEARM TANS
|
||
SETOM TIMNF1 ;TYPE IN TIME IN FORM H:M:S.T
|
||
|
||
TIM1: MOVEI C,0
|
||
TIM2: PUSHJ P,RCHA
|
||
CAIN A,":
|
||
JRST TIM5
|
||
CAIN A,".
|
||
JRST TIM3
|
||
CAIL A,"0
|
||
CAILE A,"9
|
||
JRST TIM4
|
||
IMULI C,10.
|
||
ADDI C,-"0(A)
|
||
JRST TIM2
|
||
|
||
TIM4: ADDB C,TANS
|
||
POPJ P,
|
||
|
||
TIM5: AOSN TIMNF1
|
||
IMULI C,60.
|
||
IMULI C,60.
|
||
TIM3: IMULI C,10.
|
||
ADDM C,TANS
|
||
JRST TIM1
|
||
|
||
TANS: 0
|
||
TIMNF1: 0
|
||
|
||
ASETCL: PUSHJ P,RCHA
|
||
MOVEI T1,0
|
||
CAIN A,"B
|
||
MOVEI T1,BCLOCK
|
||
CAIN A,"W
|
||
MOVEI T1,WCLOCK
|
||
JUMPE T1,GERR
|
||
PUSH P,T1
|
||
PUSHJ P,TIMIN
|
||
POP P,T1
|
||
IFN TS, IMULI C,3 ;CONVERT TO 30 THS
|
||
MOVEM C,(T1)
|
||
JRST PSRET
|
||
]
|
||
|
||
APG: MOVE B,PNTS ;OUTPUT GAME SO FAR
|
||
CLEARM PMRDF
|
||
APG6: SETZB T, PGMCNT ;T IS LINE POS. INDICATOR
|
||
IFE DEC,CAIE B,PILPT
|
||
CAIN B,PPA
|
||
PUSHJ P,FORMF
|
||
PUSHJ P,DCRR
|
||
MOVEI S,GAME-1
|
||
APG5: SKIPL QTF
|
||
CAMN S,GAMP
|
||
JRST DCRR
|
||
LDB I,[420100,,1(S)]
|
||
LDB A,[MPO,,1(S)]
|
||
JUMPE A,PGPUT
|
||
APG10: XCT PGPOS1(I)
|
||
SOUT [ASCIZ /SIDE W
|
||
/]
|
||
SETZM T
|
||
APG8: JUMPN T,APG4
|
||
MOVEI A,-GAME+3(S)
|
||
LSH A,-1
|
||
PUSHJ P,DPT
|
||
SKIPN DPTNC
|
||
PUSHJ P,DSPACE
|
||
APG3: PUSHJ P,DSPACE
|
||
JUMPE I,APG4
|
||
SOUT [ASCIZ /SIDE B/]
|
||
SETOM T
|
||
SKIPE PMRDF
|
||
JRST APG9
|
||
MOVEI D,7
|
||
PUSHJ P,DSPACE
|
||
SOJGE D,.-1
|
||
JRST APG4
|
||
APG9: PUSHJ P,DTAB
|
||
APG4: MOVE C,1(S)
|
||
PUSHJ P,PMOVE
|
||
JUMPN T, APG2
|
||
SETOM T
|
||
SKIPE PMRDF
|
||
AOJA S,APG7
|
||
MOVE D,SPNDD
|
||
PUSHJ P,DSPACE
|
||
SOJGE D,.-1
|
||
AOJA S,APG1
|
||
|
||
APG2: PUSHJ P,DCRR
|
||
SETZM T
|
||
AOJA S,APG5
|
||
|
||
APG7: PUSHJ P,DTAB
|
||
APG1: JRST APG5
|
||
|
||
PGPUT: SKIPN C,1(S)
|
||
AOJA S,APG5
|
||
TRNN C,7
|
||
JRST PGPUT2
|
||
TRNN C,4
|
||
JRST APG10
|
||
PGPUT2: CAILE S,GAME ;???
|
||
JRST PGPUT1
|
||
CAIL S,GAME
|
||
SKIPE (S)
|
||
SOUT [ASCIZ /CLEAR
|
||
/]
|
||
PGPUT1: SKIPE T
|
||
PUSHJ P,DCRR
|
||
SOUT [ASCIZ /PUT /]
|
||
LDB A,[MPC,,C]
|
||
LDB A,[PTID,,PIECE(A)]
|
||
SKIPE I
|
||
ADDI A,6
|
||
SOUT TXTB(A)
|
||
PUSHJ P,DSPACE
|
||
LDB A,[MPTO,,C]
|
||
MOVEI I,0 ;SQUARE FROM WHITES SIDE
|
||
PUSHJ P,SQOUT
|
||
JRST APG2
|
||
|
||
PGMCNT: 0 ;PLY NUMBER OF MOVE BEING PRINTED IF KNOWN ELSE -1
|
||
|
||
PGPOS1: JUMPE T,APG8
|
||
JRST APG8
|
||
|
||
EPMOVE: SETOM PGMCNT
|
||
EPMOV1: SETZM PMRDF
|
||
PMOVE: SKIPL PGMCNT
|
||
AOS PGMCNT
|
||
MOVEI A,2
|
||
MOVEM A,SPNDD
|
||
LDB I,[420100,,C]
|
||
TRNE C,7
|
||
JRST PMOVE1
|
||
PMOVE5: PUSHJ P,PMOVE6
|
||
PMOVE9: SKIPN PMRDF
|
||
TRNN C,CHKBT
|
||
POPJ P,
|
||
SOS SPNDD
|
||
MOVEI A,"+
|
||
JRST (B)
|
||
|
||
PMOVE6: LDB A,[MPC,,C]
|
||
PUSHJ P,PCOUTP
|
||
PUSHJ P,DSLASH
|
||
LDB A,[MPO,,C]
|
||
PUSHJ P,SQOUT
|
||
JUMPL C,PMOVE2
|
||
REPEAT 2,AOS SPNDD
|
||
MOVEI A,"-
|
||
PUSHJ P,(B)
|
||
PMOVE3: LDB A,[MPTO,,C]
|
||
JRST SQOUT
|
||
|
||
PMOVE2: MOVEI A,"*
|
||
PUSHJ P,(B)
|
||
LDB A,[MPTK,,C]
|
||
PUSHJ P,PCOUTP
|
||
PMV2B: PUSHJ P,DSLASH
|
||
JRST PMOVE3
|
||
|
||
PMOVE1: LDB D,[300,,C]
|
||
CAILE D,2
|
||
JRST PMOVE4
|
||
SKIPN PGMCNT
|
||
SOUT TXSIDE(I)
|
||
SOUT TYPMT-1(D)
|
||
MOVE A,TYPMT2-1(D)
|
||
ADDM A,SPNDD
|
||
JRST PMOVE9
|
||
|
||
PMOVE4: CAIN D,3
|
||
JRST PMOVE7
|
||
PUSHJ P,PMOVE6
|
||
SOUT PROTXT-4(D)
|
||
PMOVE8: REPEAT 2,SOS SPNDD
|
||
JRST PMOVE9
|
||
|
||
ASCIZ / EP/
|
||
PROTXT: ASCIZ /=Q/
|
||
ASCIZ /=R/
|
||
ASCIZ /=B/
|
||
ASCIZ /=N/
|
||
|
||
PMOVE7: MOVNI A,1
|
||
SKIPE PMRDF
|
||
DPB A,[MPTK,,C]
|
||
PUSHJ P,PMOVE6
|
||
SKIPE PMRDF
|
||
POPJ P,
|
||
SOUT [ASCII /EP!/]
|
||
JRST PMOVE8
|
||
|
||
SPNDD: 0
|
||
|
||
PMRDF: 0 ;1 OUTPUT IN FORM READABLE BACK
|
||
|
||
TXSIDE: ASCII /W !/
|
||
ASCII /B !/
|
||
|
||
|
||
;0 ALL PCS
|
||
;1 -1
|
||
;2 1ST THING TYPED
|
||
;3 2ND THING TYPED
|
||
;PSTBM PMOVING ORGL PTAKEN DESTIN
|
||
|
||
DEFINE PSTBM A,B,C,D
|
||
A_11+B_6+C_3+D
|
||
TERMIN
|
||
|
||
PMI=110300
|
||
SMI=60300
|
||
DPMI=30300
|
||
DSMI=300
|
||
|
||
PSTB: PSTBM 0,2,0,3 ;SQ SQ
|
||
PSTBM 0,2,3,1 ;SQ PC
|
||
PSTBM 2,1,0,3 ;PC SQ
|
||
PSTBM 2,1,3,1 ;PC PC
|
||
PSTBM 2,3,0,4 ;PC SQ SQ
|
||
PSTBM 2,3,4,1 ;PC SQ PC
|
||
PSTBM 2,0,3,4 ;PC PC SQ
|
||
-1 ;PC PC PC
|
||
-1 ;PC SQ SQ SQ
|
||
-1 ;PC SQ SQ PC
|
||
PSTBM 2,3,4,5 ;PC SQ PC SQ
|
||
|
||
REPEAT 17-<.-PSTB>,-1
|
||
|
||
|
||
IFE KLNTS,[
|
||
IFE TS+DECTS,[
|
||
IFE DEC,[
|
||
TTYBRK: 0
|
||
MOVEM A,TTYA
|
||
MOVEM B,TTYB
|
||
MOVEM C,TTYC
|
||
MOVEI B,1
|
||
TTYB1: CONO TTY,@TTYLT(B)
|
||
CONSO TTY,40
|
||
JRST TTYB2
|
||
DATAI TTY,A
|
||
ANDI A,177
|
||
SKIPN HEAR
|
||
JUMPN B,TTYB2
|
||
CAIN A,^Z
|
||
MOVEM B,DEAF
|
||
SKIPE DEAF
|
||
JUMPE B,TTYB2
|
||
MOVEM B,WHOTYP
|
||
CAIN A,"[
|
||
SETOM COMCNT
|
||
SKIPN COMCNT
|
||
MOVEM A,TYIMP
|
||
CAIN A,"]
|
||
CLEARM COMCNT
|
||
MOVEM A,TTYEC(B)
|
||
MOVEM A,@TTYECD(B)
|
||
AOSN TTYON
|
||
CONO TTY,@TTYST
|
||
AOSN TTYON+1
|
||
CONO TTY,@TTYST+1
|
||
CONO TTY,@TTYLT(B)
|
||
TTYB2: CONSO TTY,10
|
||
JRST TTYB3
|
||
MOVEI A,0
|
||
MOVE C,[-4,,SPECF]
|
||
HRRM B,TTYMOD
|
||
TTYMOD: EXCH A,.(C)
|
||
JUMPN A,TTYB4
|
||
AOS C
|
||
AOBJN C,.-3
|
||
CONO TTY,200+TTYCHN
|
||
SETOM TTYON(B)
|
||
TTYB3: SOJGE B,TTYB1
|
||
MOVE C,TTYC
|
||
MOVE B,TTYB
|
||
MOVE A,TTYA
|
||
JRST 12,@TTYBRK
|
||
|
||
|
||
]
|
||
|
||
IFN DEC,[
|
||
TTYBRK: 0
|
||
MOVEM A,TTYA
|
||
MOVEM B,TTYB
|
||
MOVEM C,TTYC
|
||
CONSO TTY,40
|
||
JRST TTYB2
|
||
DATAI TTY,A
|
||
ANDI A,177
|
||
CAIN A,"[
|
||
SETOM COMCNT
|
||
SKIPN COMCNT
|
||
MOVEM A,TYIMP
|
||
CAIN A,"]
|
||
CLEARM COMCNT
|
||
MOVEM A,ECHOC
|
||
AOSN TTYON
|
||
CONO TTY,10+TTYCHN
|
||
|
||
TTYB2: CONSO TTY,10
|
||
JRST TTYB3
|
||
MOVSI B,-2
|
||
MOVEI A,0
|
||
|
||
TTYL: EXCH A,SPECF(B)
|
||
JUMPN A,TTYB4
|
||
AOBJN B,TTYL
|
||
CONO TTY,200+TTYCHN
|
||
SETOM TTYON
|
||
TTYB3: MOVE C,TTYC
|
||
MOVE B,TTYB
|
||
MOVE A,TTYA
|
||
JRST 12,@TTYBRK
|
||
|
||
]
|
||
|
||
TTYB4: ANDI A,177
|
||
CAIL A,40
|
||
JRST TYOB5
|
||
CAIL A,^I
|
||
CAILE A,^M
|
||
CAIN A,^G
|
||
JRST TYOB5
|
||
TRO A,100
|
||
MOVEM A,SPECF(B)
|
||
MOVEI A,"^
|
||
TYOB5: MOVEM B,TTYBS2
|
||
MOVE B,A ;COMPUTE PARITY
|
||
IMULI B,200401
|
||
AND B,[11111111]
|
||
IMUL B,[11111111]
|
||
TLNE B,10
|
||
TRO A,200
|
||
MOVE B,TTYBS2
|
||
DATAO TTY,A
|
||
TRZ A,200
|
||
|
||
IFE DEC,[
|
||
CAMN C,[-3,,TYOMP]
|
||
JRST TTYB3
|
||
]
|
||
IFN DEC,[
|
||
TRNE B,-1
|
||
JRST TTYB3
|
||
]
|
||
|
||
CAIN A,^G
|
||
JRST [ SETOM QTF
|
||
CLEARM EOFTRP
|
||
JRST .+1]
|
||
IFN UTAPE,[
|
||
CAIN A,^S
|
||
CLEARM UREADF
|
||
]
|
||
SUBI A,3
|
||
CAIN A,12
|
||
MOVEM A,SPECF(B) ;[ HA HA
|
||
SUBI A,"]-20
|
||
CAIN A,15
|
||
MOVEM A,SPECF(B)
|
||
JRST TTYB3
|
||
|
||
TTYBS2: 0
|
||
]
|
||
]
|
||
|
||
CRR: MOVEI A,15
|
||
PUSHJ P,TYO
|
||
MOVEI A,12
|
||
|
||
TYO:
|
||
IFN UTAPE,[ SKIPGE BOOKF1
|
||
CLEARM UREADF
|
||
]
|
||
SKIPE WALLP
|
||
PUSHJ P,PILPT
|
||
TYOTTY:
|
||
|
||
IFE TS+DECTS+KLNTS,[
|
||
IFE DEC,[
|
||
PUSH P,B
|
||
MOVEI B,1
|
||
TYO3: SKIPE TYOMP(B)
|
||
JRST .-1
|
||
MOVEM A,TYOMP(B)
|
||
AOSN TTYON(B)
|
||
CONO TTY,@TTYST(B)
|
||
SOJGE B,TYO3
|
||
POP P,B
|
||
POPJ P,
|
||
|
||
]
|
||
|
||
IFN DEC,[
|
||
SKIPE TYOMP
|
||
JRST .-1
|
||
MOVEM A,TYOMP
|
||
AOSN TTYON
|
||
CONO TTY,10+TTYCHN
|
||
POPJ P,
|
||
]
|
||
]
|
||
|
||
IFN KLNTS,[
|
||
PUSH P,A
|
||
ANDI A,177
|
||
PUSHJ P,XDTCM
|
||
POP P,A
|
||
POPJ P,
|
||
]
|
||
IFN TS,[
|
||
TYO1: SKIPGE TTYOFF
|
||
POPJ P,
|
||
RTYO: PUSH P,A
|
||
ANDI A,177
|
||
CAIN A,12
|
||
JRST POPAJ
|
||
CAIN A,15
|
||
JRST [ POP P,A
|
||
JRST RCR]
|
||
CAIL A,40
|
||
AOS LINPOS
|
||
MOVE A,LINPOS
|
||
CAML A,LINEL
|
||
PUSHJ P,RCR
|
||
MOVE A,(P)
|
||
ANDI A,177
|
||
RTYO1: .IOT TYOC,A
|
||
JRST POPAJ
|
||
|
||
RCR: CLEARM LINPOS ;REALLY DO A CR
|
||
PUSHJ P,[ SKIPGE TVFLG
|
||
JRST TVCR
|
||
MOVEI A,15
|
||
PUSH P,A
|
||
JRST RTYO1]
|
||
.CALL [ SETZ
|
||
SIXBIT /RCPOS/
|
||
1000,,TYOC
|
||
402000,,A]
|
||
.VALUE
|
||
HLRZS A
|
||
ADDI A,1
|
||
CAMGE A,SVSIZ
|
||
POPJ P,
|
||
PUSH P,A
|
||
SKIPN MORE
|
||
JRST RTYOM1
|
||
;CAN'T USE SOUT BECAUSE RECURSIVE SOUT DOESNT WIN.
|
||
IRPC CH,,--MORE--
|
||
IOT TYOC,["CH]
|
||
TERMIN
|
||
PUSHJ P,TYITTY
|
||
.IOT TYOC,[^P]
|
||
.IOT TYOC,["H]
|
||
.IOT TYOC,[8] ;HORIZONAL POSITION TO 0
|
||
.IOT TYOC,[^P]
|
||
.IOT TYOC,["L] ;CLEAR OFF --MORE--
|
||
RTYOM1: PUSHJ P,TOS
|
||
SKIPGE TVFLG
|
||
JRST [ PUSHJ P,TVCEOL
|
||
JRST RTYOM2]
|
||
.IOT TYOC,[^P]
|
||
.IOT TYOC,["L] ;CLEAR NEW TOP LINE
|
||
RTYOM2: POP P,A
|
||
POPJ P,
|
||
|
||
TOS: .IOT TYOC,[^P] ;POSITION CURSOR TO "TOP OF SCREEN"
|
||
.IOT TYOC,["V]
|
||
MOVE A,TOPVP
|
||
ADDI A,10
|
||
.IOT TYOC,A
|
||
POPJ P,
|
||
|
||
TVFLG: 0 ;-1 HAVE TV AND IN TV MODE
|
||
LINPOS: 79 ;CHAR POS
|
||
; -HERE JUST TO AVOID CONTINUATION LINES
|
||
LINEL: 0 ;LINE LENGTH
|
||
MORE: 1 ;.NE. 0 TURNS ON MORE PROCESSING
|
||
TOPVP: 0 ;LINE POS TO RESET TO FOR FRESH PAGE
|
||
; 0 OR BELOW BOARD DISPLAY IN FANCY 2.
|
||
]
|
||
|
||
IFN DECTS,[
|
||
IDPB A,TYOO+1
|
||
OUTPUT TYOC,
|
||
POPJ P,
|
||
]
|
||
|
||
BELL: -1 ;.NE. 0 TYPE BELL ON MAKING MOVE -1 ALSO
|
||
; PERIODICALLY AT CLOCK LEVEL
|
||
|
||
IFN KLNTS,[
|
||
XDTCM: SETZM DTEFLG
|
||
MOVEM A,DTECMD
|
||
CONO DTE,%DBL11
|
||
SKIPN DTEFLG
|
||
JRST .-1
|
||
MOVE A,DTEF11
|
||
SETZM DTEFLG
|
||
POPJ P,
|
||
]
|
||
|
||
RCHA: SKIPL QTF
|
||
PUSHJ P,TYI
|
||
AOSN QTF
|
||
JRST TYIQ
|
||
CAIN A,^G
|
||
JRST RCHA
|
||
POPJ P,
|
||
TYI:
|
||
RCH: IFN UTAPE,[
|
||
SKIPGE UREADF
|
||
JRST TYIUT
|
||
]
|
||
TYITTY:
|
||
IFE TS+DECTS+KLNTS,[ SKIPN A,TYIMP
|
||
JRST TYI
|
||
CLEARM TYIMP
|
||
CAIGE A,140
|
||
JRST .+3
|
||
CAIE A,177
|
||
SUBI A,40 ;37 LOWER CASE
|
||
]
|
||
IFN KLNTS,[
|
||
MOVEI A,3400
|
||
PUSHJ P,XDTCM
|
||
JUMPE A,.-2
|
||
ANDI A,177
|
||
CAIN A,^G
|
||
SETOM QTF
|
||
]
|
||
IFN TS,[
|
||
IOT TYIC,A
|
||
CAIN A,14
|
||
JRST [ SKIPGE TVFLG
|
||
JRST [ MOVEI A,30. ;DELAY UNTIL SCREEN CLEARED BY 11
|
||
.SLEEP A,
|
||
PUSHJ P,DBRD ;PUT BACK BOARD AFTER FF
|
||
MOVEI A,14
|
||
JRST .+1]
|
||
MOVM ZR,FFANCY
|
||
CAIN ZR,2
|
||
JRST [ PUSHJ P,DU
|
||
PUSHJ P,TOS ;TO TOP OF SCREEN
|
||
MOVEI A,14
|
||
JRST .+1]
|
||
JRST .+1]
|
||
SKIPGE TVFLG
|
||
JRST [ CAIN A,14
|
||
JRST [ MOVEI A,30. ;DELAY UNTIL SCREEN CLEARED BY 11
|
||
.SLEEP A,
|
||
PUSHJ P,DBRD ;PUT BACK BOARD AFTER FF
|
||
MOVEI A,14
|
||
JRST .+1]
|
||
CAIN A,15
|
||
PUSHJ P,TVCR ;ECHO CR IN TV MODE
|
||
JRST .+1]
|
||
SKIPL TVFLG
|
||
JRST [ CAIN A,15
|
||
JRST [ PUSH P,A
|
||
.CALL [ SETZ
|
||
SIXBIT /RCPOS/
|
||
1000,,TYOC
|
||
402000,,A]
|
||
.VALUE
|
||
HLRZS A
|
||
ADDI A,1
|
||
CAMGE A,SVSIZ
|
||
JRST [ POP P,A
|
||
JRST .+1]
|
||
PUSHJ P,TOS
|
||
.IOT TYOC,[^P]
|
||
.IOT TYOC,["L] ;CLEAR NEW TOP LINE
|
||
POP P,A
|
||
JRST .+1]
|
||
JRST .+1]
|
||
]
|
||
IFN DECTS,[
|
||
SOSG TYII+2
|
||
INPUT TYIC,
|
||
ILDB A,TYII+1
|
||
CAIGE A,140
|
||
JRST .+3
|
||
CAIE A,177
|
||
SUBI A,40
|
||
]
|
||
CHARIN: SKIPE WALLP
|
||
PUSHJ P,LPTRA
|
||
IFN DECTS,JUMPE A,TYI
|
||
CAIN A,"[
|
||
JRST [ AOS ICMMNT
|
||
JRST TYI]
|
||
CAIN A,"]
|
||
JRST [ SKIPLE ICMMNT
|
||
SOS ICMMNT ;FROM DISK, COMMENTS NEST
|
||
SKIPL UREADF
|
||
CLEARM ICMMNT ;ON TYI, CLOSE ENDS ALL COMMENTS
|
||
JRST TYI]
|
||
SKIPE ICMMNT
|
||
JRST TYI
|
||
IFN CHEOPS,[
|
||
SKIPE HTTYMD
|
||
POPJ P, ;DONT HACK THESE IN CHEOPS CONSOLE MODE
|
||
]
|
||
CAIN A,^D
|
||
JRST DDTA
|
||
CAIN A,^E
|
||
JRST EHACK1
|
||
IFN UTAPE,[
|
||
CAIN A,^Q
|
||
JRST TYISUT
|
||
CAIN A,^S
|
||
JRST TYI
|
||
]
|
||
CAIN A,^U
|
||
JRST HACK2
|
||
IFN TS,[
|
||
CAIN A,^N
|
||
JRST FSTEP ;STEP TO NEXT PLY LEVEL IN LAST GAME READ
|
||
]
|
||
POPJ P,
|
||
|
||
|
||
IFN UTAPE,[
|
||
ASTPIN: CLEARM UREADF
|
||
POPJ P,
|
||
|
||
ASKIP: PUSHJ P,GETNUM ;SKIP TO POSITION NUMBER (IE 181 FOR FIRST ONE IN
|
||
MOVEM C,ASKPT ; DBLATT, ETC)
|
||
SETOM UREADF
|
||
ASKP1: PUSHJ P,URED
|
||
ERRTTY [ASCIZ /EOF?/]
|
||
CAIN A,^C
|
||
JRST .-2
|
||
CAIE A,"[ ;]
|
||
JRST ASKP1
|
||
PUSHJ P,GETNUM
|
||
CAME C,ASKPT
|
||
JRST ASKP1
|
||
CLEARM UREADF
|
||
POPJ P,
|
||
|
||
ASKPT: 0
|
||
]
|
||
|
||
ICMMNT: 0 ;NON-ZERO IN A COMMENT.
|
||
|
||
EHACK1: PUSHJ P,HACK1
|
||
JRST MNLP
|
||
|
||
DDTA:
|
||
IFE DEC+TS+KLNTS,[
|
||
PUSHJ P,LPTWAT
|
||
HRROS DDT-1
|
||
SKIPGE TTYON
|
||
SKIPL TTYON+1
|
||
JRST .-2
|
||
MOVE A,WHOTYP
|
||
CONO TTY,@TTYLT(A)
|
||
]
|
||
|
||
IFN DEC-TS-DECTS,[
|
||
SKIPL TTYON
|
||
JRST .-1
|
||
]
|
||
IFE TS, JRST DDT
|
||
IFN TS,[.VALUE
|
||
JRST TYI
|
||
]
|
||
|
||
TYIQ: PTTY [ASCII /QUIT!/]
|
||
JRST PNORM
|
||
|
||
|
||
IFN UTAPE,[
|
||
TYISUT: SETOM UREADF
|
||
TYIUT: PUSHJ P,URED"
|
||
JRST EOFUT
|
||
CAIN A,^C
|
||
JRST EOFUT
|
||
JRST CHARIN
|
||
|
||
EOFUT: CLEARM UREADF
|
||
SKIPN A,EOFTRP
|
||
JRST TYI
|
||
CLEARM EOFTRP
|
||
JRST (A)
|
||
]
|
||
UREADF: 0
|
||
|
||
IFN TS,[
|
||
|
||
URED: .IOT UTYIC,A
|
||
SKIPL A
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
UREDB: .IOT UTYIC,A
|
||
POPJ P,
|
||
|
||
INT: 0
|
||
0
|
||
MOVEM A,INTA
|
||
MOVE A,INT
|
||
MOVEM B,INTB
|
||
MOVEM C,INTC
|
||
TRZE A,%PICLK
|
||
JRST KALV1 ;KEEP ALIVE (HOPEFULLY) FEATURE..
|
||
KALV2: TRNE A,PDLOVI
|
||
JRST INT2
|
||
TRZE A,TYINT
|
||
JRST CTYIN
|
||
CTYIN1: JUMPE A,INT1
|
||
.VALUE
|
||
INT1: MOVE A,INTA
|
||
MOVE B,INTB
|
||
MOVE C,INTC
|
||
.DISMIS INT+1
|
||
|
||
CTYIN:
|
||
IFN CHEOPS,[
|
||
SKIPN HTTYMD ;GO TO CHEOPS CONSOLE PRGM HANDLER IF IN CHEOPS
|
||
JRST CTYIN2 ;MODE.
|
||
JSR HUUINT
|
||
JRST INT1
|
||
CTYIN2:]
|
||
MOVEI B,TYIC
|
||
.ITYIC B,
|
||
JRST INT1
|
||
CAIN B,^W
|
||
JRST ITYOF
|
||
CAIN B,^V
|
||
JRST ITYON
|
||
CAIE B,^G
|
||
JRST INTNG
|
||
SETOM QTF
|
||
SETZM UREADF
|
||
SETZM TTYOFF
|
||
CLEARM EOFTRP
|
||
ITYON: CLEARB B,TTYOFF
|
||
JRST ITYOF1
|
||
|
||
ITYOF: SETOB B,TTYOFF
|
||
ITYOF1: MOVE B,ITYMT+1(B)
|
||
ITYOF2: ILDB A,B
|
||
JUMPE A,CTYIN1
|
||
PUSHJ P,RTYO
|
||
JRST ITYOF2
|
||
|
||
ITYMT: 440700,,[ASCIZ /TTY OFF
|
||
/]
|
||
440700,,[ASCIZ /TTY ON
|
||
/]
|
||
|
||
INTNG: CAIN B,^S
|
||
CLEARM UREADF
|
||
CAIN B,^F
|
||
JRST DISFL
|
||
JRST CTYIN1
|
||
|
||
DISFL: .DCLOSE
|
||
MOVNI A,2
|
||
MOVEM A,FFANCY
|
||
JRST INT1
|
||
|
||
INT2: MOVEI B,TYO
|
||
ISOUT [.ASCII ?PDLOV PC=*O!INT+1?]
|
||
.VALUE
|
||
|
||
KALV1: SKIPL TRYMOV
|
||
JRST KALV2 ;NOT TRYING TO MOVE
|
||
SOSGE KAMCLK
|
||
JRST [ SKIPGE BELL
|
||
.IOT TYOC,[7]
|
||
MOVE B,KALINT
|
||
MOVEM B,KAMCLK
|
||
JRST .+1]
|
||
HRRZ B,INT+1
|
||
CAME B,KALVPC
|
||
JRST [ MOVEM B,KALVPC
|
||
CLEARM KALPCC
|
||
JRST KALV2] ;THIS A NEW PC, WIN
|
||
AOS B,KALPCC ;NTH TIME WE VE SEEN THIS ONE
|
||
CAIGE B,10.*2.
|
||
JRST KALV2
|
||
MOVE B,[440700,,[ASCIZ /WARNING, APPARENTLY HUNG FOR 10 SECONDS
|
||
/]]
|
||
CLEARM TRYMOV ;HAVE GIVEN WARNING, DONT GIVE ANY MORE
|
||
JRST ITYOF2
|
||
|
||
|
||
TRYMOV: 0 ;-1 IF TRYING TO MOVE (IN HACK1)
|
||
KAMCLK: 0
|
||
KALINT: 60.*2 ;TYPE BELL EVERY THIS LONG IF MACHINE IS TRYING TO MOVE
|
||
; IF BELL -1
|
||
KALVPC: 0 ;LAST PC SEEN
|
||
KALPCC: 0 ;COUNT OF TIMES THAT ONE SEEN
|
||
|
||
INTA: 0
|
||
INTB: 0
|
||
INTC: 0
|
||
]
|
||
IFN DECTS,[
|
||
URED: SOSLE UTYII+2
|
||
JRST URED1
|
||
IN UTYIC,
|
||
JRST URED1
|
||
POPJ P,
|
||
|
||
URED1: ILDB A,UTYII+1
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
UREDB: PUSHJ P,URED
|
||
JFCL
|
||
POPJ P,
|
||
|
||
;UREDB: JUMPGE A,CPOPJ
|
||
; PUSH P,A
|
||
; PUSHJ P,URED
|
||
; JRST UREDB1
|
||
; POP P,A
|
||
; POPJ P,
|
||
;
|
||
;UREDB1: EXCH A,(P)
|
||
; POP P,(A)
|
||
; AOBJN A,UREDB
|
||
; POPJ P,
|
||
]
|
||
|
||
IFE TS+DECTS,[
|
||
IFN UTAPE,[
|
||
UREDB: PUSHJ P, .URED"
|
||
JFCL
|
||
POPJ P,
|
||
]
|
||
]
|
||
TTYOFF: 0 ;-1 SUPPRESS TYPOUT
|
||
|
||
IFE KLNTS,[
|
||
IFE TS,[
|
||
IFE DEC,[
|
||
IRPS A,,SPECF TYOMP TTYEC TTYECO
|
||
A: BLOCK 2
|
||
TERMIN
|
||
|
||
AUXTYN==1
|
||
|
||
TTYON: -1
|
||
-1
|
||
TTYST: 500010+TTYCHN
|
||
500010+AUXTYN_12.+TTYCHN
|
||
TTYLT: 500000+TTYCHN
|
||
500000+AUXTYN_12.+TTYCHN
|
||
TTYECD: TTYECO+1
|
||
TTYECO
|
||
|
||
IRPS A,,TTYA TTYB TTYC TYIMP QTF DEAF WHOTYP COMCNT HEAR
|
||
A: BLOCK 1
|
||
TERMIN
|
||
|
||
]
|
||
IFN DEC,[
|
||
TYIMP: 0
|
||
SPECF:
|
||
ECHOC: 0
|
||
TYOMP: 0 ;MUST BE ECHOC+1
|
||
TTYON: -1
|
||
TTYA: 0
|
||
TTYB: 0
|
||
TTYC: 0
|
||
COMCNT: 0
|
||
]]]
|
||
|
||
LPTRA: PUSHJ P,PILPT
|
||
SUBI A,3
|
||
CAIN A,12
|
||
PUSHJ P,PILPT
|
||
ADDI A,3
|
||
POPJ P,
|
||
|
||
QTF: 0
|
||
EOFTRP: 0 ;IF .NE. 0, TRANSFER HERE ON EOF FROM "UTAPE"
|
||
|
||
STFPNT: MMSAVAC
|
||
MOVE W,CATCSA+W
|
||
MOVEM B,STFOSW
|
||
MOVEI T1,120.-15.
|
||
CAIE B,PILPT
|
||
MOVEI T1,80.-15.
|
||
MOVEM T1,STFPLL
|
||
MOVEI B,STFCHO
|
||
CLEARM STFPOS
|
||
STFP1: LDB T1,[370100,,(W)]
|
||
JUMPE T1,STVA1
|
||
STVA2: MOVE T1,STFPOS ;POSITION TO 24 BOUNDARY
|
||
IDIVI T1,24.
|
||
JUMPE T2,STVA1
|
||
MOVE T1,STFPOS
|
||
CAML T1,STFPLL
|
||
JRST STVA3
|
||
PUSHJ P,DSPACE
|
||
JRST STVA2
|
||
STVA3: PUSHJ P,DCRR
|
||
STVA1: LDB T1,[410300,,(W)]
|
||
HRRZ A,(W)
|
||
XCT STFPT(T1)
|
||
STFP2: HLRZ T1,(W)
|
||
TRNN T1,40000
|
||
JRST STFP5
|
||
STFP4: PUSHJ P,DSPACE
|
||
STFP3: AOBJN W,STFP1
|
||
PUSHJ P,DCRR
|
||
MMRSAC
|
||
POPJ P,
|
||
|
||
STFP5: MOVE A,STFPOS
|
||
CAMG A,STFPLL
|
||
JRST STFP4
|
||
PUSHJ P,DCRR
|
||
JRST STFP3
|
||
|
||
STFPT: SOUT (A)
|
||
JRST STFP6
|
||
PUSHJ P,(A)
|
||
JRST STFDP
|
||
PUSHJ P,STFDPA
|
||
REPEAT 3, JRST LOSE
|
||
|
||
STFP6: MOVE T2,A
|
||
HRLI T2,440600
|
||
STFP6B: ILDB A,T2
|
||
JUMPE A,STFP6A
|
||
ADDI A,40
|
||
PUSHJ P,(B)
|
||
STFP6A: TLNE T2,770000
|
||
JRST STFP6B
|
||
JRST STFP2
|
||
|
||
STFDP: MOVE A,(A)
|
||
PUSHJ P,DPT
|
||
JRST STFP2
|
||
|
||
STFCHO: CAIE A,15
|
||
CAIN A,12
|
||
JRST STFCH1
|
||
AOSA STFPOS
|
||
STFCH1: CLEARM STFPOS
|
||
JRST @STFOSW
|
||
|
||
STFOSW: 0 ;OUTPUT SWITCH
|
||
STFPOS: 0 ;POSITION IN OUTPUT LINE
|
||
STFPLL: 0 ;PREFERRED LINE LENGTH
|
||
|
||
IFN TS,[
|
||
.RDATE=.OPER 46
|
||
.RTIME=.OPER 45
|
||
|
||
DATP: .RDATE T1,
|
||
MOVEI T2,"/
|
||
DATP1: MOVE S,[440600,,T1]
|
||
PUSHJ P,DATP2
|
||
PUSHJ P,DATP4
|
||
DATP4: MOVE A,T2
|
||
PUSHJ P,(B)
|
||
DATP2: PUSHJ P,DATP3
|
||
DATP3: ILDB A,S
|
||
ADDI A,40
|
||
JRST (B)
|
||
|
||
TIMP: .RTIME T1,
|
||
MOVEI T2,":
|
||
JRST DATP1
|
||
]
|
||
|
||
|
||
IFE DECTS+TS,[ LOSE: ERRTTY [ASCII /LOSE!/]
|
||
JRST DDT
|
||
]
|
||
|
||
STFDPA: MOVM T1,(A)
|
||
CLEARM STFCNT
|
||
STFDPB: IDIVI T1,10.
|
||
HRLM T2,(P)
|
||
AOS STFCNT
|
||
JUMPE T1,STFDPG
|
||
PUSH P,[STFDPE]
|
||
JRST STFDPB
|
||
|
||
STFDPG: SKIPL (A)
|
||
JRST STFDPC
|
||
PUSH P,[".-60,,STFDPE]
|
||
AOS STFCNT
|
||
STFDPC: AOS STFCNT ;ALLOW EXTRA SPACE AT END
|
||
STFDPH: MOVE T1,STFPOS
|
||
IDIVI T1,24.
|
||
MOVNS T2
|
||
ADDI T2,24.
|
||
SUB T2,STFCNT
|
||
JUMPL T2,STFDPD ;MUST EXTEND PAST NEXT TAB STOP
|
||
STFDPF: JUMPE T2,STFDPE
|
||
PUSHJ P,DSPACE
|
||
SOJA T2,STFDPF
|
||
|
||
STFDPE: HLRZ A,(P)
|
||
ADDI A,60
|
||
JRST (B)
|
||
|
||
STFCNT: 0 ;CHARACTERS TAKEN BY STUFF TO PRINT
|
||
|
||
STFDPD: IMULI T1,24.
|
||
ADDI T1,24.*2-15.
|
||
ADDI T2,24.
|
||
CAMG T1,STFPLL
|
||
JRST STFDPF
|
||
PUSHJ P,DCRR
|
||
JRST STFDPH
|
||
|
||
HB1E:
|
||
IFE BOOK, JRST HB1
|
||
.ELSE [
|
||
MOVE A,PLYN
|
||
MOVEM A,HBKTM2
|
||
SKIPE BKLFT
|
||
JRST HB1 ;OUT OF BOOK
|
||
MOVE T1,GAMP
|
||
MOVEM T1,HBKTM1
|
||
HB4: SKIPN PLYN
|
||
JRST HB3
|
||
PUSHJ P,UNMOVE
|
||
JRST HB4
|
||
|
||
HB3: PUSHJ P,CAT
|
||
MOVE T1,[360600,,BBK]
|
||
MOVEI T2,GAME-1
|
||
HB6A: CAMN T2,HBKTM1
|
||
JRST HB2 ;REACHED CURRENT POSITON IN BOOK,FIND MOVE
|
||
MOVE A,1(T2)
|
||
PUSH P,T2
|
||
PUSH P,T1
|
||
PUSHJ P,BKFND
|
||
ERRTTY [ASCII /CANT CONVERT GAME TO MOVE NO!/]
|
||
POP P,T1
|
||
POP P,T2
|
||
HB7A: ILDB B,T1
|
||
CAIL B,75
|
||
JRST HB5
|
||
CAMN C,B
|
||
JRST HB6 ;MATCHED MOVE IN BOOK
|
||
MOVEI D,0 ;NOT THIS MOVE SPACE TO SAME PLYN FOR NEXT ALT
|
||
HB7: ILDB B,T1
|
||
CAIGE B,75
|
||
AOJA D,HB7
|
||
CAIN B,75
|
||
JRST HB7
|
||
CAIN B,76
|
||
JRST HB7B
|
||
HB7C: SOJGE D,HB7
|
||
JRST HB7A
|
||
|
||
HB7B: ILDB B,T1
|
||
ILDB B,T1
|
||
JRST HB7C
|
||
|
||
HB5: CAIE B,75
|
||
JRST HB5A
|
||
SUBI C,75
|
||
JRST HB7A
|
||
|
||
HB5A: CAIE B,76
|
||
JRST HB5B
|
||
ILDB B,T1
|
||
ILDB D,T1 ;TRANSPOSITION
|
||
DPB B,[60600,,D]
|
||
HRRZ S,BKSMTV(D)
|
||
IDIVI S,6
|
||
MOVE T1,BKPT(T1)
|
||
TLZ T1,17
|
||
ADD T1,S
|
||
JRST HB7A
|
||
|
||
HB5B: MOVE T1,HBKTM2
|
||
MOVEM T1,BKLFT ;LEAVING BOOK
|
||
|
||
HBX: CAMN T2,HBKTM1
|
||
JRST HB1
|
||
PUSH P,T2
|
||
MOVE A,1(T2)
|
||
PUSHJ P,IMMOVE
|
||
ERRTTY [ASCII /BOOK RESTORE FOULUP!/]
|
||
POP P,T2
|
||
AOJA T2,HBX
|
||
|
||
HB6: MOVE A,1(T2) ;MATCHED MOVE
|
||
PUSH P,T1
|
||
PUSH P,T2
|
||
PUSHJ P,IMMOVE
|
||
ERRTTY [ASCII /BOOK FOULUP!/]
|
||
POP P,T2
|
||
POP P,T1
|
||
AOJA T2,HB6A
|
||
|
||
HB2: MOVEI D,0
|
||
HB2C: ILDB B,T1
|
||
CAIL B,75
|
||
JRST HB2A
|
||
ADD B,D
|
||
PUSHJ P,BKMM ;B HAS NO OF MOVE WE WANT TO MAKE
|
||
HRRZ A,B
|
||
HLRZ B,B
|
||
LDB J,[430100,,PLYN]
|
||
PUSHJ P,TMOVE
|
||
ERRTTY [ASCII /BOOK MOVE ILLEGAL!/]
|
||
CLEARM HACKVV
|
||
CLEARM CVPR
|
||
IFE DECTS,[
|
||
SETOM MSPC ;DONT ALLOW PARAM CHANGE DOWN JUST AFTER BOOK MOVE
|
||
CLEARM LPCSLW ;TELL PARAMETER STUFF TIMING BUFFER NOT REALLY VALID SO
|
||
; DONT SPEED UP OR SLOW DOWN FOR A WHILE.
|
||
]
|
||
JRST HB2D
|
||
|
||
|
||
HB2A: CAIE B,75
|
||
JRST HB2B
|
||
ADDI D,75
|
||
JRST HB2C
|
||
|
||
HB2B: CAIE B,76
|
||
JRST HB5B ;LEAVING BOOK
|
||
ILDB B,T1
|
||
ILDB Q,T1
|
||
DPB B,[60600,,Q]
|
||
HRRZ S,BKSMTV(Q)
|
||
IDIVI S,6
|
||
MOVE T1,BKPT(T1)
|
||
TLZ T1,17
|
||
ADD T1,S
|
||
JRST HB2
|
||
|
||
HBKTM1: 0
|
||
HBKTM2: 0
|
||
]
|
||
BKLFT: 0 ;PLYN AT WHICH BOOK LEFT OR 0 IN BOOK
|
||
|
||
MCRR: HRRZ A,B ;CR NEAR END OF LINE
|
||
CAIN A,PILPT
|
||
JRST MCRR2
|
||
POPJ P,
|
||
; JRST DCRR
|
||
|
||
MCRR2: MOVE A,LINEPOS
|
||
CAIGE A,120.-15.
|
||
POPJ P,
|
||
PUSHJ P,DCRR
|
||
JRST DTAB
|
||
|
||
|
||
IFN DEC+KLNTS,LINEPOS: 0
|
||
|
||
HACK2: MOVEI A,MNLPA
|
||
MOVEM A,GSW
|
||
SKIPG PLYN
|
||
JRST MNLP
|
||
PUSHJ P,UNMOVE
|
||
PUSHJ P,CAT
|
||
IFN DSPLY,PUSHJ P,DISUP
|
||
IFN BOOK,[MOVE A,PLYN
|
||
CAMGE A,BKLFT
|
||
CLEARM BKLFT
|
||
]
|
||
JRST MNLP
|
||
|
||
.DPT: IDIVI T1,60. ;OUTPUT TIME FOR WALLP
|
||
MOVE A,T1
|
||
PUSH P,T2
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DPERD
|
||
POP P,T1
|
||
IMULI T1,100.
|
||
IDIVI T1,60.
|
||
IDIVI T1,10.
|
||
MOVE A,T1
|
||
PUSH P,T2 ;DON'T LEADING ZERO ELIMINATE
|
||
PUSHJ P,DPT
|
||
POP P,A
|
||
JRST DPT
|
||
|
||
|
||
PWNPNT: PUSHJ P,DCRR
|
||
SETZM PPNTF1
|
||
MOVSI C,-5
|
||
PWNPT2: SETZM PPNTF2
|
||
MOVE D,[-NPC,,1]
|
||
PNPT2A: SKIPN PIECEL(D)
|
||
JRST PWNPT3
|
||
XCT PNPTB1(C)
|
||
JRST PWNPT5
|
||
PWNPT3: AOBJN D,PNPT2A
|
||
SKIPE PPNTF2
|
||
PUSHJ P,DCRR
|
||
AOBJN C,PWNPT2
|
||
IFN 0,[
|
||
SKIPE C,NUMMM
|
||
JRST PWNPT7
|
||
]
|
||
PWNPT4: SKIPE PPNTF1
|
||
JRST DCRR
|
||
POPJ P,
|
||
|
||
PWNPT5: SKIPN PPNTF2
|
||
SOUT @PNPTB2(C)
|
||
SETOM PPNTF2
|
||
SETOM PPNTF1
|
||
PUSHJ P,DSPACE
|
||
MOVE A,PIECEL(D)
|
||
PUSHJ P,SQOUT
|
||
JRST PWNPT3
|
||
|
||
PNPTB1: SKIPE PPASED(D)
|
||
PUSHJ P,PWNPT6
|
||
PUSHJ P,PWNPT6
|
||
PUSHJ P,PWNPT6
|
||
SKIPGE PPTP(D)
|
||
|
||
PNPTB2: [ASCII /PASSED PAWN: !/]
|
||
[ASCII /FORWARD PAWN: !/]
|
||
[ASCII /BACKWARD PAWN: !/]
|
||
[ASCII /ISOLATED PAWN: !/]
|
||
[ASCII /PAWN DEFENDED BY A PAWN: !/]
|
||
|
||
SIDTXT: [ASCIZ / FOR WHITE
|
||
/]
|
||
[ASCIZ / FOR BLACK
|
||
/]
|
||
|
||
PWNPT6: HRRZ A,C
|
||
CAME A,PPTP(D)
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
IFN 0,[
|
||
PWNPT7: SOUT [ASCII /PAWN GROUP!/]
|
||
CAIE C,1
|
||
SOUT [ASCII /S!/]
|
||
SOUT [ASCII /: !/]
|
||
MOVNS C
|
||
HRLZS C
|
||
PWNPT8: MOVE A,NUMMM+1(C)
|
||
PUSHJ P,DPT
|
||
SOUT [ASCII /(!/]
|
||
SETZM PPNTF2
|
||
MOVEI A,NUMMM+1(C)
|
||
MOVE D,[-8,,1]
|
||
CAMN A,PFILES(D)
|
||
JRST PWNPT9
|
||
PWNPTX: AOBJN D,.-2
|
||
SOUT [ASCII /) !/]
|
||
AOBJN C,PWNPT8
|
||
PUSHJ P,DCRR
|
||
JRST PWNPT4
|
||
|
||
PWNPT9: SKIPE PPNTF2
|
||
SOUT [ASCII /, !/]
|
||
SETOM PPNTF2
|
||
PUSH P,D
|
||
EXCH A,D
|
||
PUSHJ P,DPT
|
||
MOVE A,D
|
||
POP P,D
|
||
JRST PWNPTX
|
||
|
||
]
|
||
|
||
TYPLM: MOVE A,GAMP
|
||
MOVE C,(A)
|
||
SUBI A,GAME
|
||
MOVEM A,PGMCNT
|
||
JRST EPMOV1
|
||
|
||
TYPMT: ASCII /O-O!/
|
||
ASCII /O-O-O!/
|
||
|
||
TYPMT2: 11.-.LENGTH /O-O/
|
||
11.-.LENGTH /O-O-O/
|
||
|
||
TYPLNE: JUMPE R,CPOPJ
|
||
PUSHJ P,MCRR
|
||
MOVE C,1(R)
|
||
PUSHJ P,EPMOVE
|
||
MOVE C,(R)
|
||
MOVEI A,"!
|
||
TLNE C,BMTHR
|
||
PUSHJ P,(B)
|
||
MOVEI A,"#
|
||
TLNE C,BIDSF
|
||
PUSHJ P,(B)
|
||
PUSHJ P,DSPACE
|
||
LDB A,[PUSNM,,(R)]
|
||
JUMPE A,TYPLN1
|
||
MOVEI A,"(
|
||
PUSHJ P,(B)
|
||
LDB A,[PUSNM,,(R)]
|
||
PUSHJ P,DPT
|
||
MOVEI A,")
|
||
PUSHJ P,(B)
|
||
TYPLN1: HRRZ R,(R)
|
||
JRST TYPLNE
|
||
|
||
|
||
ARPLY: MOVE T1,PLYN
|
||
CAML T1,RPLYPN ;DONT START YET
|
||
SKIPN RWPF(A)
|
||
JRST MNLPA ;READ MOVE
|
||
PUSHJ P,HACK1
|
||
SKIPGE QTF
|
||
POPJ P,
|
||
MOVE A,@GAMP
|
||
MOVEM A,ARPLYT
|
||
LDB I,[100,,PLYN]
|
||
XORI I,1
|
||
PUSHJ P,UNMOVE
|
||
ARPLY1: SKIPN UREADF
|
||
JRST PNORM
|
||
PUSHJ P,RMOVE
|
||
JRST ARPLY1
|
||
PUSHJ P,IMMOVE
|
||
JRST MNLP1
|
||
MOVE A,ARPLYT
|
||
CAMN A,@GAMP
|
||
POPJ P,
|
||
MOVEI B,TYO
|
||
ISOUT [.ASCII ?MV DFRS AT PLY *U!PLYN?]
|
||
POPJ P,
|
||
|
||
ARPLYT: 0
|
||
|
||
COMPF: 0 ;-1 IN COMPARE MODE
|
||
COBW: 0 ;# BETTER FOR WHITE
|
||
COBB: 0 ;# BETTER FOR BLACK
|
||
COWW: 0 ;# WORSE FOR WHITE
|
||
COWB: 0 ;# WORSE FOR BLACK
|
||
|
||
IFN UTAPE,[
|
||
ACMP:
|
||
ACMP1: SKIPN UREADF
|
||
JRST ACMPP
|
||
PUSHJ P,RMOVE
|
||
JRST ACMP1
|
||
MOVEM A,BKTM1
|
||
MOVEI A,CMPE
|
||
PUSHJ P,CMPM
|
||
ERRTTY [ASCIZ /LOSE AT ACMP1/]
|
||
ADDM C,COBW(I)
|
||
SOS A,ARPLYT
|
||
SUB A,C
|
||
ADDM A,COWW(I)
|
||
MOVEI B,TYO
|
||
ISOUT [.ASCII ?BETTER *U!C WORSE *U!A?]
|
||
MOVE A,BKTM1
|
||
PUSHJ P,IMMOVE
|
||
ERRTTY [ASCIZ /MOVE ILLEGAL AT ACMP1/]
|
||
POPJ P,
|
||
|
||
CMPE: PUSHJ P,LMGXR
|
||
MOVEI B,CPOPJ ;RETURN FROM PMG
|
||
PUSHJ T,TDFROB ;SORT FROBS
|
||
CLEARM BOOKF3
|
||
HRRZ A,LGLMST
|
||
MOVNI A,1(A)
|
||
ADDI A,1(P)
|
||
IDIVI A,NWDPM
|
||
MOVEM A,ARPLYT
|
||
JRST BKME
|
||
|
||
|
||
ACMPP: MOVEI B,TYO
|
||
MOVEI I,0
|
||
PUSHJ P,ACMPP1
|
||
MOVEI I,1
|
||
PUSHJ P,ACMPP1
|
||
JRST PNORM
|
||
|
||
ACMPP1: MOVE A,COWW(I)
|
||
SUB A,COBW(I)
|
||
FLOAT A
|
||
MOVE C,COWW(I)
|
||
ADD C,COBW(I)
|
||
FLOAT C
|
||
FDVR A,C
|
||
ISOUT [.ASCII ?RATING *Q!A?]
|
||
POPJ P,
|
||
]
|
||
|
||
IFN TS+DECTS,[
|
||
CLKUD: ;UPDATE CURCLK BY AMT OF REAL AND RUN TIMES THAT
|
||
;HAVE ELAPSED SINCE LAST UPDATE. LEAVE THESE IN
|
||
;A AND B.
|
||
IFN TS,[
|
||
.RDTIM A,
|
||
.SUSET [.RRUNT,,B]
|
||
]
|
||
.ELSE [
|
||
TIMER A,
|
||
MOVEI B,0
|
||
RUNTIM B,
|
||
]
|
||
EXCH A,LRTIM
|
||
EXCH B,LRNTIM
|
||
SUB A,LRTIM
|
||
SUB B,LRNTIM
|
||
MOVE C,CURCLK
|
||
MOVMS A
|
||
MOVMS B
|
||
ADDM A,(C)
|
||
ADDM B,1(C)
|
||
POPJ P,
|
||
]
|
||
|
||
IFE DECTS,[
|
||
AFASTER: MOVEI B,TYO
|
||
SKIPE A,CPRAMS
|
||
JRST [ SOS A,CPRAMS
|
||
HRRZM P,LPCSLW
|
||
JRST AFAST1]
|
||
PTTY [ASCII /FASTEST!/]
|
||
POPJ P,
|
||
|
||
ASLOWER: MOVEI B,TYO
|
||
MOVE A,CPRAMS
|
||
CAIL A,NPARS-1
|
||
JRST ASLOW1
|
||
AOS A,CPRAMS
|
||
SETOM LPCSLW
|
||
AFAST1: ISOUT [.ASCII ?PARAM *O!A?]
|
||
CLEARM MSPC
|
||
JRST PARLD
|
||
|
||
ASLOW1: SOUT [ASCII /SLOWEST!/]
|
||
POPJ P,
|
||
]
|
||
|
||
|
||
IFE DECTS,[
|
||
PARLD: PUSH P,A ;LOAD SET OF PAR IN A
|
||
MOVEI B,TYO
|
||
SOUT [ASCII /CHANGING TO PARAMETER NOS !/]
|
||
MOVE A,(P)
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
MOVE A,(P)
|
||
MOVE C,PARD(A)
|
||
PUSHJ P,SETDR
|
||
MOVE A,(P)
|
||
IMULI A,SBRLNG
|
||
HRLI B,PARW(A)
|
||
HRRI B,SBR
|
||
BLT B,SBR+SBRLNG-1
|
||
MOVE A,(P)
|
||
MOVE C,PARF(A)
|
||
PUSHJ P,SETFR
|
||
JRST POPAJ
|
||
|
||
LTMDF==3 ;NO OF MOVES IN TIME RING BUFFER
|
||
|
||
NPARS==7 ;NO POSSIBLE SETS PARAMENTERS
|
||
|
||
PARD: 2 ;DEPTH
|
||
3
|
||
4
|
||
4
|
||
5
|
||
6
|
||
6
|
||
|
||
PARF: 1
|
||
2
|
||
2
|
||
2
|
||
2
|
||
2
|
||
3
|
||
|
||
PARW: REPEAT 2,[
|
||
REPEAT SBRLNG,6
|
||
]
|
||
10.
|
||
10.
|
||
7
|
||
7
|
||
REPEAT SBRLNG-4,6
|
||
REPEAT 4,[
|
||
15.
|
||
15.
|
||
9
|
||
9
|
||
REPEAT SBRLNG-4,7
|
||
]
|
||
|
||
MSPC: -1 ;MOVES SINCE PAR CHANGE
|
||
LPCSLW: 0 ;-1 IF LAST PARAMETER CHANGE SLOWER
|
||
; 0 IF BOOK MOVE MADE (NEITHER SPEED UP NOR SLOW DOWN UNTIL
|
||
; TIMING BUFFER FILLED)
|
||
; + IF LAST PARAMETER CHANGE FASTER
|
||
CPRAMS: 2 ;NUMBER OF CURRENT PARAMETERS
|
||
MYTIM: 0 ;MACHINES TIME SO FAR IN TENTHS OF SEC.
|
||
MMTMP: 0 ;POINTER TO MMTMT
|
||
MMTMT: BLOCK LTMDF ;TIME TAKEN BY MACHINE FOR LAST N MOVES (UNITS OF TENTHS OF SEC)
|
||
|
||
CLKSW: -1 ;-1 RUN TIME ACCORDING TO SIDE TO MOVE
|
||
;0 DONT RUN TIME
|
||
;1 RUN TIME ACCORDING TO CLOCK KLUDGE
|
||
|
||
CLKTB: WCLOCK
|
||
BCLOCK
|
||
|
||
TIML: 110.*60.*10. ;TIME LIMIT IN TENTHS OF SEC
|
||
MOVL: 50. ;NO OF PLYS THAT HAVE TO BE MADE BY THEN
|
||
TIMLI: 1*55.*60.*10. ;INCREMENT TO TIML FOR NEXT LIMIT
|
||
MOVLI: 25. ;INCREMENT TO MOVL
|
||
MMCUTM: 45.*60.*10. ;TAKE NO ACTION THAT WOULD PLAY FASTER THAN BASPAR FOR THIS AMT OF TIME
|
||
BASPAR: 3 ;BASE PARAMETER SET
|
||
|
||
|
||
ASRATE: MOVEI B,TYO
|
||
SOUT [ASCIZ /SET TIME CONTROL: MOVES /]
|
||
PUSHJ P,GETNUM
|
||
PUSH P,C
|
||
SOUT [ASCIZ /IN MINUTES /]
|
||
PUSHJ P,GETNUM
|
||
PUSH P,C
|
||
SOUT [ASCIZ /THEREAFTER, MOVES /]
|
||
PUSHJ P,GETNUM
|
||
PUSH P,C
|
||
SOUT [ASCIZ / IN MINUTES /]
|
||
PUSHJ P,GETNUM
|
||
PUSH P,C
|
||
|
||
POP P,C
|
||
FLOAT C
|
||
FMPR C,[600.0] ;CONVERT TO TENTHS OF SEC
|
||
FMPR C,[.95] ;ALLOW MARGIN
|
||
FIX C
|
||
MOVEM D,TIMLI
|
||
POP P,MOVLI
|
||
POP P,C
|
||
FLOAT C
|
||
FMPR C,[600.0]
|
||
FMPR C,[.95]
|
||
PUSH P,C
|
||
FIX C
|
||
MOVEM D,TIML
|
||
POP P,C
|
||
FMPR C,[.40]
|
||
FIX C
|
||
MOVEM D,MMCUTM ;DONT PLAY FASTER THAN BASPAR UNTIL AT LEAST 40% OF TIME USED UP.
|
||
POP P,MOVL
|
||
POPJ P,
|
||
|
||
CCTIM: MOVE I,MACCLR ;MACHINE COLOR
|
||
MOVE A,@CLKTB(I)
|
||
IDIVI A,3 ;CONVERT TO TENTH OF SEC
|
||
MOVEM A,MYTIM ;MY TIME SO FAR
|
||
MOVE T2,PLYN ;MAYBE CHANGE PARAMETERS. COME HERE JUST AFTER HAVING
|
||
AOS T2 ; PLAYED MOVE, IMMEDIATEDLY BEFORE POPJ ING FROM HACK1
|
||
LSH T2,-1
|
||
CAML T2,MOVL
|
||
JRST CCTM1 ;HAVE MET OLD LIMIT
|
||
MOVSI A,-LTMDF
|
||
MOVEI B,0
|
||
ADD B,MMTMT(A) ;SUM TIME OF LAST SEVERAL MOVES
|
||
AOBJN A,.-1
|
||
IDIVI B,LTMDF ;OBTAIN AVERAGE
|
||
MOVE T1,B
|
||
LSH T1,-3
|
||
ADD B,T1 ;ALLOW EXTRA 12%
|
||
MOVE T1,T2 ;NUMBER OF MOVES PLAYED SO FAR
|
||
SUB T1,MOVL
|
||
MOVNS T1 ;GET MOVES TO TIME CONTROL
|
||
IMUL B,T1
|
||
MOVE T2,B ;SAVE ESTIMATED TIME TO COMPLETE
|
||
ADD B,MYTIM ;ADD TO TIME USED SO FAR
|
||
CAMG B,TIML
|
||
JRST CCTM3 ;OK, SHOULD MAKE IT. GO SLOWER?
|
||
MOVE A,CPRAMS ;GEE, LOOKS LIKE WE'RE NOT GOING TO MAKE IT.
|
||
CAMLE A,BASPAR
|
||
JRST CCTM2 ;PREVIOUSLY SWITCHED TO SLOWER PARAMS, SO OK TO SPEED BACK UP.
|
||
MOVE A,MYTIM
|
||
CAMG A,MMCUTM ;DONT SPEED UP UNTIL USED THIS MUCH TIME
|
||
POPJ P,
|
||
CCTM2: SKIPN CPRAMS
|
||
POPJ P, ;ALREADY FASTEST PARAMETERS!
|
||
SKIPGE LPCSLW
|
||
JRST CCTM4A
|
||
MOVE A,MSPC ;LAST CHANGE FASTER, SO DONT SPEED UP AGAIN FOR
|
||
CAIGE A,LTMDF ;THREE MOVES
|
||
POPJ P,
|
||
CCTM4A: SOS CPRAMS
|
||
HRRZM P,LPCSLW ;LAST PARAMETER CHANGE FASTER
|
||
CCTM2A: MOVEI B,TYO
|
||
SOUT [ASCII /
|
||
PARAM !/]
|
||
MOVE A,CPRAMS
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
MOVE A,CPRAMS
|
||
CLEARM MSPC
|
||
JRST PARLD
|
||
|
||
CCTM3: ADD B,T2 ;ADD AGAIN ESTIMATED COMPUTE TIME TO REACH TIME CONTROL
|
||
MOVE S,TIML
|
||
SUB S,MYTIM
|
||
CAIL S,5*60.*10.;SKIP ON LESS THAN 5 MIN REMAINING ***UNITS??
|
||
CAML B,TIML ;SKIP ON DOESNT APPEAR WE WILL USE HALF OUR REMAINING TIME
|
||
POPJ P,
|
||
SKIPLE LPCSLW
|
||
JRST CCTM3A
|
||
MOVE A,MSPC ;LAST CHANGE SLOWER, SO DONT SLOW DOWN AGAIN FOR
|
||
CAIGE A,LTMDF ;THREE MOVES
|
||
POPJ P,
|
||
CCTM3A: MOVE A,CPRAMS ;WILL USE LESS THAN 1/2 TIME SLOW DOWN
|
||
CAIL A,NPARS-1
|
||
POPJ P,
|
||
AOS CPRAMS
|
||
SETOM LPCSLW ;LAST PARAMETER CHANGE SLOWER
|
||
JRST CCTM2A
|
||
|
||
CCTM1: MOVE A,TIMLI ;REACHED TIME CONTROL, RESET STUFF FOR NEXT ONE.
|
||
ADDM A,TIML
|
||
MOVE A,MOVLI
|
||
ADDM A,MOVL
|
||
MOVEI B,TYO
|
||
PUSHJ P,LMTYP
|
||
MOVE A,BASPAR
|
||
CAMG A,CPRAMS
|
||
POPJ P,
|
||
MOVEM A,CPRAMS ;MADE TIME CONTROL, SLOW DOWN TO AT LEAST BASE PARAMETER LEVEL.
|
||
JRST CCTM2A
|
||
|
||
LMTYP: SOUT [ASCII /NOW SET FOR !/]
|
||
MOVE A,MOVL
|
||
PUSHJ P,DPT
|
||
SOUT [ASCII / IN !/]
|
||
MOVE C,TIML
|
||
PUSHJ P,TIMTP
|
||
JRST DCRR
|
||
]
|
||
|
||
GSW: MNLPA
|
||
|
||
PNORM: MOVEI B,MNLPA-HACK5
|
||
PSELF: ADDI B,HACK5
|
||
JRST SPMS1
|
||
|
||
PWHITE: MOVEI B,HACK3
|
||
MOVEI I,0
|
||
JRST SPMS2
|
||
|
||
PBLACK: MOVEI B,HACK4
|
||
MOVEI I,1
|
||
SPMS2:
|
||
IFE DECTS,[
|
||
SKIPE CLKSW
|
||
AOSE CLKCOK
|
||
JRST SPMS1
|
||
MOVEM I,MACCLR
|
||
PTTY [ASCII /CLOCK STARTED!/]
|
||
]
|
||
SPMS1: HRRZM B,GSW
|
||
JRST PSRET
|
||
|
||
HACK3: JUMPE A,HACK1
|
||
JRST MNLPA
|
||
|
||
HACK4: JUMPE A,MNLPA
|
||
JRST HACK1
|
||
|
||
HACK5: ;GET HERE ON PS
|
||
IFN TS,[ MOVEM A,HACT5
|
||
.LISTEN A,
|
||
EXCH A,HACT5
|
||
SKIPE HACT5
|
||
]
|
||
IFE KLNTS,[
|
||
IFE TS, SKIPE TYIMP
|
||
JRST PNORM
|
||
]
|
||
PUSHJ P,HACK1
|
||
IFN TS,[
|
||
SKIPL GETTY
|
||
JRST MNLP
|
||
]
|
||
JRST MNLP2R
|
||
|
||
IFN TS,HACT5: 0
|
||
|
||
MACCLR: 0 ;MACHINE COLOR FOR CLOCK PURPOSES
|
||
CLKCOK: -1 ;DO NOT RUN CLOCK UNTIL A PW OR PB TYPED IN -1
|
||
|
||
|
||
ERROR: 0 ;UUO HANDLER
|
||
MOVEM A,UUOAS
|
||
MOVEM B,UUOBS
|
||
MOVEM C,UUOCS
|
||
LDB A,[330600,,40]
|
||
CAIL A,4
|
||
CAILE A,14 ;TSOUT
|
||
JRST ER5
|
||
MOVEM 16,TUACS+16
|
||
MOVEI 16,TUACS
|
||
BLT 16,TUACS+15
|
||
MOVE A,UUOAS
|
||
MOVEM A,TUACS+A
|
||
MOVE T1,ERROR
|
||
TUX2: HRRM T1,TU5
|
||
LDB T2,[331100,,-1(T1)]
|
||
CAIE T2,XCT_-27.
|
||
JRST TUX3
|
||
SOS T1
|
||
HRRM T1,TUX1
|
||
MOVSI 16,TUACS
|
||
BLT 16,16
|
||
TUX1: MOVEI T1,@.
|
||
AOJA T1,TUX2
|
||
TUX3: LDB D,[330600,,40]
|
||
CAIN D,TSOUT_-27.
|
||
JRST TUTS1
|
||
CAIN D,ISOUT_-27.
|
||
JRST TUIS1
|
||
SKIPGE TSSW
|
||
JRST ERT3 ;TRACE NOT ON
|
||
SKIPL TPSW
|
||
JRST TU1 ;PRINTOUT NOT DESIRED
|
||
MOVE B,TRPSW
|
||
CAIN D,12
|
||
JRST TUX3F
|
||
PUSHJ P,TUCOP
|
||
JUMPE A,TU1 ;OPERAND=0
|
||
TUX3F:
|
||
TUX3A: MOVEI A,40
|
||
LDB T1,[420100,,TUT1-4(D)]
|
||
JUMPN T1,TUX3B ;MOVE OP DONT PRINT PREV CONTENTS
|
||
MOVEI A,"?
|
||
MOVE T1,TUACS+R
|
||
CAME T1,TUSR
|
||
TUX3D: PUSHJ P,(B)
|
||
TUX3E: MOVE A,TUACS+R
|
||
PUSHJ P,DPT
|
||
TUX3B: PUSHJ P,DTAB
|
||
CAIN D,12
|
||
JRST TU3A
|
||
PUSHJ P,TUCOP
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DTAB
|
||
TU5: MOVEI A,. ;EFFECTIVE LOCN OF UUO+1
|
||
CAIN A,ITRS1+1
|
||
MOVEI A,TRS1 1 ;HACK HACK
|
||
MOVE J,TRCSW1
|
||
MOVE C,ATRTT1(J)
|
||
TU3: HLRZ T1,@ATRTT3(J)
|
||
CAMN T1,A
|
||
JRST TU2
|
||
AOBJN C,TU3
|
||
MOVEI C,[ASCII /UNKNOWN TRACE UUO!/]
|
||
JRST ERT4
|
||
|
||
TUIS1: MOVE B,TUACS+B ;HERE ON ISOUT
|
||
HRRZ TT,40
|
||
JRST TU3B
|
||
|
||
TUTS1: MOVEI B,TRTYO ;TRACE TYO ROUTINE
|
||
HRRZ TT,40
|
||
SETOM TUTSPF ;SIGNAL STUFF IN TRACE BUFFER
|
||
JRST TU3B
|
||
|
||
TU3A: HRRZ TT,40
|
||
HRRZ TT,(TT)
|
||
JRST TU3B
|
||
|
||
TU2: HRRZ TT,@ATRTT3(J)
|
||
TU3B: HRLI TT,440700
|
||
TR6L: ILDB A,TT
|
||
TR6L4: JUMPE A,TR7
|
||
CAIN A,"*
|
||
JRST TR6L1 ;HACK HACK
|
||
PUSHJ P,(B)
|
||
JRST TR6L
|
||
|
||
TR6L1: ILDB A,TT
|
||
MOVEI T1,0
|
||
TR6L3: ILDB T2,TT
|
||
CAIL T2,"0
|
||
CAILE T2,"7
|
||
JRST TR6L2
|
||
LSH T1,3
|
||
ADDI T1,-"0(T2)
|
||
JRST TR6L3
|
||
|
||
TR6L2: MOVEM T2,TR6LCS
|
||
CAIG T1,20
|
||
ADDI T1,TUACS
|
||
MOVE T2,(T1)
|
||
EXCH A,T2
|
||
PUSH P,UUOCS
|
||
PUSH P,UUOBS
|
||
PUSH P,UUOAS
|
||
PUSH P,40
|
||
PUSH P,ERROR
|
||
CAIN T2,"S
|
||
JRST TR6LS ;SQUARE
|
||
CAIN T2,"P
|
||
JRST TR6LP ;PIECE
|
||
CAIN T2,"M
|
||
JRST TR6LM ;SUBTRACT THE CONSTANT PIECE:, THEN PRINT AS PIECE
|
||
CAIN T2,"O
|
||
JRST TR6LO ;OCTAL NUMBER
|
||
CAIN T2,"F
|
||
JRST TR6LF ;FILE
|
||
CAIN T2,"D
|
||
JRST TR6LD ;DIRECTION
|
||
CAIN T2,"H
|
||
JRST TR6LH ;MASK TO 18 BITS, THEN PRINT OCTAL NUMBER
|
||
CAIN T2,"U
|
||
JRST TR6LU ;DECIMAL NUMBER
|
||
CAIN T2,"Q
|
||
JRST TR6LQ ;FLOATING POINT
|
||
CAIN T2,"B
|
||
JRST TR6SX ;SIXBIT
|
||
MOVEI C,[ASCII /UNKNOWN * CODE!/]
|
||
JRST ERT4
|
||
|
||
TR7: CAIE D,ISOUT_-27.
|
||
JRST TR7A
|
||
LDB T1,[270400,,40]
|
||
SKIPN T1
|
||
TR7A: PUSHJ P,DCRR
|
||
TU1: CAIN D,TSOUT_-27.
|
||
JRST TU1C
|
||
CAIE D,ISOUT_-27.
|
||
CAIN D,12
|
||
JRST TU1C
|
||
PUSHJ P,TUCOP
|
||
LDB T1,[420100,,TUT1-4(D)]
|
||
XCT TUT2(T1)
|
||
MOVEM A,TUSR
|
||
TU1C: MOVSI 16,TUACS
|
||
BLT 16,16
|
||
JRST TUUX
|
||
|
||
TRPSW: PNTDIS ;ENTRY OF ROUTINE FOR TRACE OUTPUT
|
||
|
||
PNTDIS: SKIPE WALLP
|
||
PUSHJ P,PILPT
|
||
JRST TYO
|
||
|
||
TUCOP: HRRE A,40
|
||
CAIGE D,7
|
||
JRST TU1A
|
||
CAIGE A,20
|
||
JUMPGE A,TU1B
|
||
MOVE A,(A)
|
||
TU1A: SKIPGE TUT1-4(D)
|
||
MOVNS A
|
||
POPJ P,
|
||
|
||
TU1B: MOVE A,TUACS(A)
|
||
JRST TU1A
|
||
|
||
ER5:
|
||
IFN CHEOPS,[
|
||
CAIL A,HLUUO_-27. ;LOWEST CHEOPS UUO
|
||
CAILE A,HHUUO_-27. ;HIGHEST CHEOPS UUO
|
||
JRST ER5CH
|
||
; SKIPN CHEOSW
|
||
; .VALUE ;NOT SUPPOSED TO BE USING CHEOPS
|
||
|
||
MOVE A,UUOAS
|
||
MOVE B,UUOBS
|
||
MOVE C,UUOCS
|
||
MOVEM 16,HUUOAC+16 ;SAVE ACS
|
||
MOVEI 16,HUUOAC
|
||
BLT 16,HUUOAC+15
|
||
PUSH P,[CHURET]
|
||
LDB A,[330600,,40]
|
||
CAIN A,HXCT_-27.
|
||
JRST HUUXCT
|
||
CAIN A,HLOAD_-27.
|
||
JRST HUULOD
|
||
CAIN A,HSTORE_-27.
|
||
JRST HUUSTO
|
||
CAIN A,HLOADIR_-27.
|
||
JRST HUUIR
|
||
CAIN A,HSOUT_-27.
|
||
JRST HUUSOU
|
||
.VALUE
|
||
|
||
CHURET: MOVSI 16,HUUOAC
|
||
BLT 16,16
|
||
JRST CHUUX
|
||
|
||
HUUOAC: BLOCK 17
|
||
ER5CH:]
|
||
CAIN A,SOUT_-27.
|
||
JRST ER3
|
||
CLEARM TTYOFF
|
||
IFN UTAPE, CLEARM UREADF
|
||
CAIN A,PTTY_-27.
|
||
JRST ER4
|
||
CAIE A,ERRTTY_-27.
|
||
JRST ERT3
|
||
IFE TS+DECTS,[CONO PI,400 ;FATAL ERROR, TURN OFF INTERRUPTS
|
||
IFE KLNTS, CONO TTY,0
|
||
] PUSHJ P,ECRR
|
||
HRRZ C,40
|
||
ERT4: HRLI C,440700
|
||
ERT2: ILDB A,C
|
||
CAIN A,"!
|
||
JRST ERT1
|
||
JUMPE A,ERT1
|
||
PUSHJ P,ETYO
|
||
JRST ERT2
|
||
|
||
ERT1: PUSHJ P,ECRR
|
||
IFN DECTS, JRST MNLP
|
||
IFE TS+DECTS,[
|
||
CONI APRCON
|
||
JRST DDT
|
||
]
|
||
IFN TS,[
|
||
LOSE: MOVE C,UUOCS
|
||
MOVE B,UUOBS
|
||
MOVE A,UUOAS
|
||
.VALUE
|
||
JRST .-1
|
||
]
|
||
|
||
IFN DECTS, LOSE: JRST 4,.
|
||
|
||
TUACS: BLOCK 20
|
||
|
||
TUT1: 2_33. ;4.9 1=SUB
|
||
0_33. ;4.8 1=MOVE
|
||
4_33.
|
||
2_33.
|
||
0_33.
|
||
4_33.
|
||
0 ;JUST STRING PRINT
|
||
|
||
TUT2: ADDB A,TUACS+R
|
||
MOVEM A,TUACS+R
|
||
|
||
TUSR: 0 ;SAVED VAL OF R
|
||
|
||
TR6LS: LDB I,[100,,PLYN]
|
||
PUSHJ P,SQOUT
|
||
TR6LR: POP P,ERROR
|
||
POP P,40
|
||
POP P,UUOAS
|
||
POP P,UUOBS
|
||
POP P,UUOCS
|
||
MOVE A,TR6LCS
|
||
JRST TR6L4
|
||
|
||
TR6LCS: 0
|
||
|
||
TR6LH: HRRZS A ;ONLY HALF WORD
|
||
TR6LO: PUSHJ P,OCTPNT
|
||
JRST TR6LR
|
||
|
||
TR6SX: MOVE T2,A
|
||
MOVE T1,[440600,,T2]
|
||
TRSX1: ILDB A,T1
|
||
JUMPE A,TR6LR
|
||
ADDI A,40
|
||
PUSHJ P,(B)
|
||
TLNE T1,770000
|
||
JRST TRSX1
|
||
JRST TR6LR
|
||
|
||
TR6LU: PUSHJ P,DPT
|
||
JRST TR6LR
|
||
|
||
TR6LM: SUBI A,PIECE
|
||
TR6LP: PUSHJ P,PCOUT
|
||
JRST TR6LR
|
||
|
||
|
||
TR6LF: SOUT TXFILE(A)
|
||
JRST TR6LR
|
||
|
||
TR6LD: SOUT TXDIR(A)
|
||
JRST TR6LR
|
||
|
||
TR6LQ: PUSHJ P,FPFP ;FLOATING POINT
|
||
JRST TR6LR
|
||
|
||
|
||
ECRR: MOVEI A,15
|
||
PUSHJ P,ETYO
|
||
MOVEI A,12
|
||
ETYO:
|
||
IFE TS+DECTS+KLNTS,[
|
||
CONO TTY,400000
|
||
CONSZ TTY,20
|
||
JRST .-1
|
||
DATAO TTY,A
|
||
POPJ P,]
|
||
IFN TS,[.IOT TYOC,A
|
||
POPJ P,
|
||
]
|
||
IFN KLNTS, JRST TYO
|
||
IFN DECTS, JRST TYO
|
||
|
||
ERT3: MOVEI C,[ASCII /UNKNOWN UUO!/]
|
||
JRST ERT4
|
||
|
||
ER4: HRROI B,TYO
|
||
ER3: HRRZ C,40
|
||
HRLI C,440700
|
||
ER2: ILDB A,C
|
||
CAIN A,"!
|
||
JRST ER1
|
||
JUMPE A,ER1
|
||
PUSHJ P,(B)
|
||
JRST ER2
|
||
|
||
ER1: CAMN B,[-1,,TYO]
|
||
PUSHJ P,CRR
|
||
TUUX: MOVE C,UUOCS
|
||
MOVE B,UUOBS
|
||
MOVE A,UUOAS
|
||
CHUUX: JRST 2,@ERROR
|
||
|
||
UUOCS: 0
|
||
UUOBS: 0
|
||
UUOAS: 0
|
||
|
||
IFN DECTS,[
|
||
TIMTPJ: IDIVI C,6 ;TYPE TIME IN JIFFIES
|
||
JRST TIMTP
|
||
|
||
TIMTPM: IDIVI C,100. ;TYPE TIME IN MILLISECONDS
|
||
JRST TIMTP
|
||
]
|
||
IFN TS,[
|
||
TSRTP: IDIVI C,3 ;TYPE TIME IN 30THS
|
||
JRST TIMTP
|
||
|
||
TSMTP: IDIVI C,4069.*6. ;TYPE TIME IN 4 US ES
|
||
|
||
]
|
||
|
||
TIMTP: IDIVI C,10. ;TYPE TIME IN C IN TENTHS
|
||
PUSH P,D
|
||
IDIVI C,60.
|
||
PUSH P,D
|
||
IDIVI C,60.
|
||
PUSH P,D
|
||
MOVE A,C
|
||
JUMPE A,.+3
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCOLON
|
||
POP P,A
|
||
JUMPE A,.+3
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCOLON
|
||
POP P,A
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DPERD
|
||
POP P,A
|
||
JRST DPT
|
||
|
||
|
||
IFE TS+DECTS+KLNTS,[
|
||
IAPRBRK: 0
|
||
CONSO 1000
|
||
ERRTTY [ASCII /APR LOSSAGE!/]
|
||
IFN UTAPE,JSR APRBRK"
|
||
AOS ..TIME
|
||
IFE DEC,[
|
||
AOS DTIME
|
||
]
|
||
AOSG CLKUDF
|
||
JRST APREX1
|
||
MOVEM A,CASAVE
|
||
MOVEM B,CBSAVE
|
||
SKIPGE CLKCOK
|
||
JRST APREX
|
||
SKIPG CLKSW
|
||
JRST APRC1
|
||
MOVEI A,0
|
||
CONSO TTY,400000
|
||
MOVEI A,1
|
||
XOR A,INVCLK
|
||
XOR A,MACCLR
|
||
MOVE B,CLKTB(A)
|
||
MOVEM B,CURCLK
|
||
APRC1: AOS A,@CURCLK
|
||
MOVE B,CURCLK
|
||
CAIN B,OCLOCK
|
||
JRST APREX
|
||
ADDI B,WNUM+1-WCLOCK
|
||
HRLI B,220600
|
||
MOVEM B,DISIP
|
||
IDIVI A,10.
|
||
JSR DISC
|
||
MOVEI B,".-"0
|
||
JSR DISC
|
||
JSR DIS1
|
||
JSR DIS1
|
||
MOVE B,A
|
||
JSR DISC
|
||
MOVNI A,5
|
||
MOVEM A,CLKUDF
|
||
JRST APREX
|
||
]
|
||
|
||
IFE DECTS,[
|
||
IFE TS,[
|
||
ATTIME: MOVEI B,TYO
|
||
SOUT [ASCII /WHITE !/]
|
||
MOVE C,WCLOCK
|
||
PUSHJ P,TIMTP
|
||
SOUT [ASCII / BLACK !/]
|
||
MOVE C,BCLOCK
|
||
PUSHJ P,TIMTP
|
||
PUSHJ P,DCRR
|
||
JRST PSRET
|
||
]
|
||
|
||
TSW: 1 ;IF 1 TYPE TIMES AFTER EACH MOVE
|
||
|
||
IFN TS,[
|
||
ATTIME: MOVEI B,TYO
|
||
SOUT [ASCII /WHITE !/]
|
||
MOVE C,WCLOCK+1
|
||
PUSHJ P,TSMTP
|
||
SOUT [ASCII / IN !/]
|
||
MOVE C,WCLOCK
|
||
PUSHJ P,TSRTP
|
||
SOUT [ASCII / BLACK !/]
|
||
MOVE C,BCLOCK+1
|
||
PUSHJ P,TSMTP
|
||
SOUT [ASCII / IN !/]
|
||
MOVE C,BCLOCK
|
||
PUSHJ P,TSRTP
|
||
PUSHJ P,DCRR
|
||
JRST PSRET
|
||
]
|
||
|
||
]
|
||
;REAL TIME UNITS 10THS OUT OF TS 30THS IN
|
||
;RUNTIME UNITS 4US IN TS
|
||
|
||
WCLOCK: 0 ;REAL TIME IN TS
|
||
IFN TS,WMTIM: 0 ;MACHINE TIME IN TS MUST BE WCLOCK +1 IN TS
|
||
|
||
OCLOCK: 0
|
||
IFN TS,OMTIM: 0
|
||
CURCLK: OCLOCK
|
||
CASAVE: 0
|
||
BCLOCK: 0 ;MUST BE WCLOCK+4 OUT OF TS
|
||
IFN TS,BMTIM: 0
|
||
CBSAVE: 0
|
||
IFE DECTS+TS,[
|
||
DISIP: 0
|
||
CLKUDF: 0
|
||
]
|
||
APRCON: 0
|
||
|
||
LRTIM: 0 ;REAL TIME LAST READ
|
||
LRNTIM: 0 ;RUN TIME LAST READ
|
||
|
||
CONSTANTS
|
||
|
||
RECMP: TDZA C,C
|
||
RECMS: MOVSI C,(SETZ)
|
||
HRR C,LFS ;RECORD MOVE
|
||
TRNN C,-1
|
||
ERRTTY [ASCII /RECMOV, NO FS!/] ;SQUARE
|
||
MOVE A,@GAMP
|
||
MOVEM A,1(C)
|
||
MOVE S,CVPR
|
||
HRRZM C,CVPR
|
||
SKIPGE C
|
||
TLO S,400000
|
||
EXCH S,(C)
|
||
MOVEM S,LFS
|
||
POPJ P,
|
||
|
||
IMMOVE: LDB ZR,[420100,,A]
|
||
LDB I,[100,,PLYN]
|
||
CAME ZR,I
|
||
.VALUE ;THIS NOT A MOVE FOR THE RIGHT SIDE?
|
||
JRST MMOVE
|
||
|
||
TMOVE3: SKIPE I
|
||
TLO T1,200000
|
||
JRST TMOVE5
|
||
|
||
TMOVE2: LDB I,[100,,PLYN] ;NORMAL MOVE, PC IN B TO SQ IN A
|
||
JUMPE A,TMOVE3 ;SPECIAL MOVE -> SQUARE 0, FULL MOVE LESS STM IN T1.
|
||
DPB B,[MPO,,T1]
|
||
SKIPG B,BOARD(B)
|
||
.VALUE
|
||
SUBI B,PIECE
|
||
DPB B,[MPC,,T1]
|
||
JRST TMOVE4
|
||
|
||
TMOVE1: MOVEI A,-375(A)
|
||
SKIPE I
|
||
TLO A,200000
|
||
JRST MMOVE
|
||
|
||
TMOVE: CAIL A,376 ;SIDE TO MOVE IN I
|
||
JUMPGE A,TMOVE1 ;CASTLE
|
||
MOVEI T1,0 ;MOVE PIECE IN B TO SQUARE A
|
||
DPB B,[MPC,,T1]
|
||
MOVE C,PIECEL(B)
|
||
DPB C,[MPO,,T1]
|
||
TMOVE4: DPB A,[MPTO,,T1]
|
||
SKIPE C,BOARD(A)
|
||
SUBI C,PIECE
|
||
DPB C,[MPTK,,T1]
|
||
SKIPE BOARD(A)
|
||
TLO T1,400000
|
||
SKIPGE PIECE(B)
|
||
TLO T1,200000
|
||
TMOVE5: MOVE A,T1
|
||
;DROPS THRU
|
||
|
||
;DROPS IN
|
||
MMOVE:
|
||
MMVNC: CLEARM MMPIVF
|
||
MOVE B,[MMPIVF,,MMPIVF+1]
|
||
BLT B,MMFL+9
|
||
MOVEM A,LMV
|
||
IFN DBG,[
|
||
TDNN A,[177777,,-1]
|
||
ERRTTY [ASCII /MMOVE CALLED WITH ZERO!/]
|
||
]
|
||
AOS NMMV
|
||
TRNE A,7
|
||
JRST MMOVE3
|
||
MMV3A: LDB B,[MPC,,A] ;MAKE MOVE IN A
|
||
LDB C,[MPO,,A]
|
||
IFN DBG,[
|
||
CAME C,PIECEL(B)
|
||
JRST MMERR
|
||
]
|
||
MOVEM C,OKGLCN ;SAVE ORG LOCN FOR USE IN KING UPDATE
|
||
;IFN DBG,[
|
||
; LDB A,[MPTO,,A]
|
||
; PUSHJ P,LGLMP
|
||
; JRST MMERR
|
||
;]
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC1 ;REMOVE PIECE MOVING
|
||
LDB S,[MPTO,,LMV]
|
||
SKIPGE LMGT(B)
|
||
CAME S,GHLOC
|
||
JRST MMOV1
|
||
MOVE A,LMV
|
||
TDO A,[SETZ 3] ;EP+CAPTURE
|
||
XCT MMT1(I)
|
||
MOVE T1,BOARD(R)
|
||
SUBI T1,PIECE
|
||
DPB T1,[MPTK,,A] ;PAWN ACTUALLY BEING CAPTURED
|
||
MOVEM A,LMV
|
||
CLEARM BOARD(R)
|
||
PUSH P,T1
|
||
PUSH P,S
|
||
MOVE T1,GHLOC
|
||
SKIPE ICSW
|
||
PUSHJ P,MMGF3
|
||
POP P,S
|
||
POP P,T1
|
||
CLEARM GHLOC
|
||
CLEARM GHSD
|
||
JRST MMS4
|
||
MMOV1: SKIPN T2,BOARD(S)
|
||
JRST MMOVE1
|
||
MMS3: LDB T1,[MPTK,,LMV]
|
||
IFN DBG,[
|
||
CAIE T2,PIECE(T1)
|
||
JRST MMERR
|
||
]
|
||
MMS4: SKIPE ICSW
|
||
PUSHJ P,MMIC3 ;REMOVE PIECE CAPTURED
|
||
MOVN T2,RPVAL(T1) ;T1 HAS NO OF PIECE CAPTURED
|
||
ADDM T2,@PBALP(T1)
|
||
SOS @PCCPNR(T1)
|
||
SOS @NPCPT(T1)
|
||
SOS @NPCP1(T1)
|
||
SKIPGE RFPCS(T1) ;ADJUST NUM SLIDEING PIECES
|
||
XCT MMT5(I)
|
||
CLEARM PIECEL(T1)
|
||
MMOVE1: AOS NMOVES(B)
|
||
MOVE T1,PIECEL(B)
|
||
MOVEM S,PIECEL(B)
|
||
LDB T2,[BFILE,,BPREL(S)]
|
||
MOVEM T2,PFILE(B)
|
||
LDB T2,[BRANK,,BPREL(S)]
|
||
MOVEM T2,PRANK(B)
|
||
SKIPGE PIECE(B)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK(B)
|
||
MOVE T2,BOARD(T1)
|
||
CLEARM BOARD(T1)
|
||
MOVEM T2,BOARD(S)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC7 ;PUT BACK MOVING PIECE
|
||
MOVE A,LMV
|
||
MMOVE5: AOS PLYN
|
||
AOS T2,GAMP
|
||
CAIL T2,GAME+LGAME
|
||
JRST [ AOS GAMP
|
||
MOVEI B,TYO
|
||
SOUT [ASCIZ /GAME TOO LONG /]
|
||
POPJ P,]
|
||
SKIPE T1,GHLOC
|
||
JRST MMGF1 ;GHOST ELIM
|
||
MMGF2: MOVEM A,(T2)
|
||
|
||
MMOVE7: SKIPGE RPIECE(B)
|
||
PUSHJ P,MMKG1 ;KING MOVE UPDATE KING POS TABLE
|
||
SKIPL LMGT(B) ;SKIP ON PAWN
|
||
JRST MMS2
|
||
MOVEI T1,10
|
||
ADDM T1,PVALUE(B) ;INCREMENT VALUE OF PAWN
|
||
MOVE Q,NMOVES(B)
|
||
SOJN Q,MMS5
|
||
MOVE Q,PIECEL(B)
|
||
CAIL Q,5*BW
|
||
CAIL Q,7*BW
|
||
JRST MMS5
|
||
ADDM T1,PVALUE(B)
|
||
XCT MMT2(I) ;GENERATE GHOST
|
||
SKIPLE T2,BOARD+1(Q) ;T1 GETS LCN OF POTENTIAL GHOST
|
||
SKIPL LMGT-PIECE(T2) ;CAN IT BE CAPTURED BY OPP PAWN
|
||
JRST MMGH1
|
||
MOVE T2,(T2)
|
||
XOR T2,PIECE(B)
|
||
JUMPL T2,MMGH2 ;GHOST CAN BE CAPTURED
|
||
MMGH1: SKIPLE T2,BOARD-1(Q)
|
||
SKIPL LMGT-PIECE(T2)
|
||
JRST MMS2 ;GHOST CANT BE CAPTURED BY PAWN,FORGET IT
|
||
MOVE T2,(T2)
|
||
XOR T2,PIECE(B)
|
||
JUMPL T2,MMGH2
|
||
MMS2: SKIPE ICSW
|
||
PUSHJ P,MMIC2 ;PAWN HACK AND PIN HACK
|
||
PUSHJ P,CAT
|
||
MOVE A,@OKINGT(I)
|
||
XCT MMT3(I)
|
||
JRST POPJ1
|
||
MOVE2A: JRST UNMOVE
|
||
|
||
MMPIVF: 0 ;-1 IF PAWNS INVOLVED IN MOVE
|
||
MMFL: BLOCK 10. ;-1 ON FILES PAWNS INVOLVED OR ADJ TO THEM
|
||
LMV: 0 ;TEMP STG FOR LAST MOVE PROCESSED
|
||
|
||
|
||
|
||
MMKG1: MMSAVAC
|
||
MOVN R,NKSI
|
||
SKIPE ICSW
|
||
PUSHJ P,MMKG1C
|
||
PUSHJ P,MMKG3
|
||
MOVE R,PIECEL(B)
|
||
MOVEM R,OKGLCN
|
||
MOVE R,NKSI
|
||
PUSHJ P,MMKG3
|
||
SKIPE ICSW
|
||
PUSHJ P,MMKG1C
|
||
MMRSAC
|
||
POPJ P,
|
||
|
||
MMKG3: MOVE T1,OKGLCN
|
||
JUMPE I,MMKG3A
|
||
IRP A,,[0,1,-1,BW,-BW,BW+1,BW-1,-BW+1,-BW-1]
|
||
SKIPL BOARD+A(T1)
|
||
ADDM R,WAV+A(T1)
|
||
TERMIN
|
||
POPJ P,
|
||
|
||
MMKG3A: IRP A,,[0,1,-1,BW,-BW,BW+1,BW-1,-BW+1,-BW-1]
|
||
SKIPL BOARD+A(T1)
|
||
ADDM R,BAV+A(T1)
|
||
TERMIN
|
||
POPJ P,
|
||
|
||
OKGLCN: 0 ;KING LOCN PRIOR TO MOVE
|
||
|
||
MMKG1C: MOVSI T1,-9
|
||
MMKG1A: MOVE A,OKGLCN
|
||
ADD A,DIRDT(T1)
|
||
SKIPGE BOARD(A)
|
||
JRST MMKG5
|
||
MOVSI T2,-18.
|
||
MMKG4A: LDB S,RDAT(T2)
|
||
JUMPE S,MMKG4
|
||
XCT RMOY1+1(I)
|
||
JRST MMKG4 ;OUR GUY SO HES NOT AFFECTED
|
||
ADDM R,PDV(S)
|
||
MOVE C,R
|
||
IMUL C,PINVF(S)
|
||
ADDM C,@PDVPNR(S)
|
||
TRNE T2,30
|
||
JRST MMKG4 ;NOT RANK OR FILE
|
||
SKIPGE LMGT(S)
|
||
JRST MMKG4B
|
||
SKIPGE SLDPC(S)
|
||
JRST MMKG4C
|
||
MMKG4: AOBJN T2,MMKG4A
|
||
MMKG5: AOBJN T1,MMKG1A
|
||
POPJ P,
|
||
|
||
MMKG4B: HRRZ C,T2
|
||
CAIL C,3
|
||
CAILE C,7
|
||
JRST MMKG4
|
||
XCT RMDTT+1(I)
|
||
JRST MMKG4
|
||
MMKG4C: MOVE C,PIECEL(S)
|
||
MMKG4D: LDB Q,RDATS(T2)
|
||
JUMPE Q,MMKG4
|
||
SKIPGE SLDPC(Q)
|
||
XCT RMOY2+1(I)
|
||
JRST MMKG4
|
||
ADDM R,PDV(Q)
|
||
MOVE ZR,R
|
||
IMUL ZR,PINVF(Q)
|
||
ADDM ZR,@PDVPNR(Q)
|
||
MOVE C,PIECEL(Q)
|
||
JRST MMKG4D
|
||
|
||
|
||
IFN DBG,[
|
||
MMERR: ERRTTY [ASCII /BAD MOVE --MMOVE!/]
|
||
]
|
||
|
||
MMGH2: MOVEM T1,GHLOC
|
||
SKIPE ICSW
|
||
PUSHJ P,MMGH2A
|
||
MOVE T1,PMT(I)
|
||
MOVEM T1,GHSD
|
||
JRST MMS2
|
||
|
||
MMGH2A: SKIPLE R,@MMGHT1(I) ;REFLECT ADDING GHOST LOCN IN T1 SIDE IN I
|
||
XCT MMGHT2(I) ;DOES SQUARE CONTAIN HIS P
|
||
JRST MMGH2B
|
||
SUBI R,PIECE ;YES
|
||
MOVE S,PCATV(R)
|
||
ADDM S,@MMGHT3(I)
|
||
MOVE S,@MMGHT7(I)
|
||
ADDM S,PDV(R)
|
||
IMUL S,PINVF(R)
|
||
ADDM S,@PDVPNR(R)
|
||
DPB R,MMGHT4(I)
|
||
MMGH2B: SKIPLE R,@MMGHT5(I)
|
||
XCT MMGHT2(I)
|
||
POPJ P,
|
||
SUBI R,PIECE
|
||
MOVE S,PCATV(R)
|
||
ADDM S,@MMGHT3(I)
|
||
MOVE S,@MMGHT7(I)
|
||
ADDM S,PDV(R)
|
||
IMUL S,PINVF(R)
|
||
ADDM S,@PDVPNR(R)
|
||
DPB R,MMGHT6(I)
|
||
POPJ P,
|
||
|
||
MMGHT1: BOARD+BW+1(T1)
|
||
BOARD-BW+1(T1)
|
||
|
||
MMGHT2: SKIPL SNFBP-PIECE(R)
|
||
SKIPL LMGSTD-PIECE(R)
|
||
|
||
MMGHT3: BA+BW(T1)
|
||
WA-BW(T1)
|
||
|
||
MMGHT4: BDAEPL+BW(T1)
|
||
BDAEPL-BW(T1)
|
||
|
||
MMGHT5: BOARD+BW-1(T1)
|
||
BOARD-BW-1(T1)
|
||
|
||
MMGHT6: BDAEPR+BW(T1)
|
||
BDAEPR-BW(T1)
|
||
|
||
MMGHT7: BAV+BW(T1)
|
||
WAV-BW(T1)
|
||
|
||
MMS5: MOVE Q,PIECEL(B)
|
||
CAIL Q,3*BW
|
||
CAIL Q,9*BW
|
||
JRST .+2
|
||
JRST MMS2
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC1 ;REMOVE IT AS A P
|
||
TRO A,4
|
||
MOVEM A,@GAMP
|
||
MOVEI T2,MMQN
|
||
HRRM T2,PIECE(B)
|
||
; MOVE T2,[1,,2]
|
||
; MOVEM T2,PCATV(B)
|
||
MOVSI T2,-17
|
||
SKIPE BDAST+1(T2)
|
||
AOBJN T2,.-1
|
||
JUMPGE T2,[ERRTTY [ASCII /MMS5, BDAST FULL!/]] ;NO BDAST SPACE LEFT
|
||
HRRZM B,BDAST+1(T2)
|
||
AOS T2
|
||
DPB T2,[PTIDS,,PIECE(B)]
|
||
MOVEI T2,QNINC ;EXCESS VALUE QUEEN OVER PAWN ON SEVENTH
|
||
ADDM T2,PVALUE(B)
|
||
MOVN T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
MOVEI T2,PCBAL(I)
|
||
MOVEM T2,PBALP(B)
|
||
MOVEI T2,KQV
|
||
MOVEM T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
SOS @NPCPT(B) ;FLUSH P COUNT
|
||
MOVEI T2,WQNC(I)
|
||
HRLI T2,(SETZ )
|
||
MOVEM T2,NPCPT(B)
|
||
AOS @NPCPT(B) ;AOS Q COUNT
|
||
MOVEI T2,WPCCNT(I)
|
||
MOVEM T2,PCCPNR(B)
|
||
AOS @PCCPNR(B) ;AOS PC COUNT
|
||
MOVEI T2,LMQUEEN
|
||
MOVEM T2,LMGT(B)
|
||
MOVEI T2,LSQUEEN
|
||
MOVEM T2,LMGSTD(B)
|
||
MOVEI T2,RMWQ
|
||
MOVEM T2,RMDTB(B)
|
||
MOVE T2,PLYN
|
||
MOVEM T2,PLPWN(B)
|
||
MOVEI R,QID ;PAWN QUEENING
|
||
DPB R,[PTID,,PIECE(B)]
|
||
SETZM PPT(B)
|
||
MOVEI R,LQUEEN
|
||
MOVEM R,LGLMPT(B)
|
||
MOVEI T1,1*2 ;NOT QDCOF SINCE THIS WILL STICK
|
||
MOVEM T1,PINVF(B) ;NO NEED TO HACK PDV SINCE PC OFF BOARD
|
||
MOVSI T1,(SETZ)
|
||
ANDCAM T1,SNFBP(B)
|
||
; ANDCAM T1,LMGSTD(B) ;SINCE IT WAS JUST CLOBBERED WITH LSQUEEN ABOVE
|
||
IORM T1,RFPCS(B)
|
||
IORM T1,DDPCS(B)
|
||
IORM T1,SLDPC(B) ;CODE BELOW USES T1
|
||
MOVE R,B
|
||
CAIL R,BPV
|
||
SUBI R,NPCS
|
||
MOVNS R
|
||
ROT T1,(R)
|
||
MOVEI T2,PTB
|
||
SKIPGE PIECE(B)
|
||
ADDI T2,PTBL
|
||
IORM T1,PTBQ-PTB(T2)
|
||
HRLI T2,-12.
|
||
ANDCAM T1,PTBP-PTB(T2)
|
||
AOBJN T2,.-1
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC7 ;PUT IT BACK AS Q
|
||
JRST MMS2
|
||
|
||
MMGF1: SKIPE ICSW
|
||
PUSHJ P,MMGF3
|
||
SUBI T1,4*BW+1
|
||
SKIPN I
|
||
SUBI T1,3*BW
|
||
TRO T1,10
|
||
DPB T1,[MGHEL,,A]
|
||
CLEARM GHLOC
|
||
CLEARM GHSD
|
||
JRST MMGF2
|
||
|
||
MMGF3: MOVEI Q,0 ;REFLECT REMOVING GHOST LOCN IN T1
|
||
LDB R,MMGFT1(I)
|
||
JUMPE R,MMGF4
|
||
DPB Q,MMGFT1(I)
|
||
MOVN S,PCATV(R)
|
||
ADDM S,@MMGFT2(I)
|
||
MOVN S,@MMGFT5(I)
|
||
ADDM S,PDV(R)
|
||
IMUL S,PINVF(R)
|
||
ADDM S,@PDVPNR(R)
|
||
MMGF4: LDB R,MMGFT3(I)
|
||
JUMPE R,CPOPJ
|
||
DPB Q,MMGFT3(I)
|
||
MOVN S,PCATV(R)
|
||
ADDM S,@MMGFT4(I)
|
||
MOVN S,@MMGFT5(I)
|
||
ADDM S,PDV(R)
|
||
IMUL S,PINVF(R)
|
||
ADDM S,@PDVPNR(R)
|
||
POPJ P,
|
||
|
||
MMGFT2: WA-BW(T1)
|
||
BA+BW(T1)
|
||
|
||
MMGFT4: WA-BW(T1)
|
||
BA+BW(T1)
|
||
|
||
MMGFT1: BDAEPL-BW(T1)
|
||
BDAEPL+BW(T1)
|
||
|
||
MMGFT3: BDAEPR-BW(T1)
|
||
BDAEPR+BW(T1)
|
||
|
||
MMGFT5: WAV-BW(T1)
|
||
BAV+BW(T1)
|
||
|
||
MMT1: MOVEI R,-BW(S)
|
||
MOVEI R,BW(S)
|
||
|
||
MMT2: MOVEI T1,-BW(Q)
|
||
MOVEI T1,BW(Q)
|
||
|
||
MMT3: SKIPN BA(A)
|
||
SKIPN WA(A)
|
||
SKIPN BA(A)
|
||
|
||
;MMT4: ADDM T2,PCBAL+1
|
||
; ADDM T2,PCBAL
|
||
|
||
MMT5: SOS NUMORP+1
|
||
SOS NUMORP
|
||
SOS NUMORP+1
|
||
|
||
UNMOVE: SOS PLYN
|
||
PUSH P,I
|
||
CLEARM MMPIVF
|
||
MOVE B,[MMPIVF,,MMPIVF+1]
|
||
BLT B,MMFL+9
|
||
SKIPE T1,GHLOC
|
||
JRST UMG3
|
||
UMG4:
|
||
UMOVE1: SOS T,GAMP
|
||
MOVE A,1(T)
|
||
MOVEM A,LMV
|
||
LDB I,[420100,,A]
|
||
TRNE A,170
|
||
JRST UMG1
|
||
UMG2: LDB B,[MPC,,A]
|
||
LDB C,[MPO,,A]
|
||
LDB D,[MPTK,,A]
|
||
LDB T,[MPTO,,A]
|
||
TRNE A,7
|
||
JRST UMOVE2
|
||
JUMPE C,UNPUT
|
||
UMOVE7: SKIPE ICSW
|
||
PUSHJ P,MMIC1 ;REMOVING PIECE MOVING
|
||
MOVE S,PIECEL(B)
|
||
MOVEM S,OKGLCN
|
||
LDB S,[BFILE,,BPREL(C)]
|
||
MOVEM S,PFILE(B)
|
||
LDB S,[BRANK,,BPREL(C)]
|
||
MOVEM S,PRANK(B)
|
||
SKIPGE PIECE(B)
|
||
MOVE S,REVERS(S)
|
||
MOVEM S,RPRANK(B)
|
||
MOVNI T2,10
|
||
SKIPGE LMGT(B)
|
||
ADDM T2,PVALUE(B) ;UNMOVEING PAWN
|
||
MOVE S,BOARD(T)
|
||
CLEARM BOARD(T)
|
||
MOVEM S,BOARD(C)
|
||
MOVEM C,PIECEL(B)
|
||
SOS NMOVES(B)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC7
|
||
SKIPGE RPIECE(B)
|
||
PUSHJ P,MMKG1
|
||
JUMPGE A,UMOVE3 ;NO CAPTURE
|
||
MOVEM T,PIECEL(D)
|
||
LDB T2,[BFILE,,BPREL(T)]
|
||
MOVEM T2,PFILE(D)
|
||
LDB T2,[BRANK,,BPREL(T)]
|
||
MOVEM T2,PRANK(D)
|
||
SKIPGE PIECE(D)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK(D)
|
||
MOVEI T2,PIECE(D)
|
||
MOVEM T2,BOARD(T)
|
||
MOVE T2,RPVAL(D)
|
||
ADDM T2,@PBALP(D)
|
||
AOS @PCCPNR(D)
|
||
AOS @NPCPT(D)
|
||
AOS @NPCP1(D)
|
||
SKIPGE RFPCS(D) ;ADJUST NUMORP
|
||
XCT UMT5(I)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC8
|
||
UMOVE8: SKIPE ICSW
|
||
PUSHJ P,MMIC2
|
||
POPIJ: POP P,I
|
||
POPJ P,
|
||
|
||
|
||
UMOVE3: SKIPN NMOVES(B)
|
||
SKIPL LMGT(B) ;SKIP ON PAWN
|
||
JRST UMOVE8
|
||
SUB C,T
|
||
MOVMS C
|
||
CAIN C,2*BW
|
||
ADDM T2,PVALUE(B) ;TAKING BACK D A
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC2
|
||
POP P,I
|
||
POPJ P,
|
||
|
||
UMOVE2: LDB T2,[300,,A]
|
||
CAILE T2,2
|
||
JRST UMOVE5
|
||
MOVE T,NMKING(I)
|
||
MOVN ZR,STVDT1(T)
|
||
ADDM ZR,@CDVPNR(I)
|
||
CLEARM NMKING(I)
|
||
MOVEI T,0 ;UNCASTLE
|
||
TLNE A,200000
|
||
MOVEI T,NPCS
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC5B
|
||
MOVE C,PIECEL+WKING-PIECE(T)
|
||
MOVEM C,OKGLCN
|
||
MOVE D,BOARD(C)
|
||
CLEARM BOARD(C)
|
||
ADDI C,2
|
||
CAIE T2,1
|
||
SUBI C,4
|
||
MOVEM C,PIECEL+WKING-PIECE(T)
|
||
MOVEM D,BOARD(C)
|
||
LDB S,[BFILE,,BPREL(C)]
|
||
MOVEM S,PFILE+WKING-PIECE(T)
|
||
LDB S,[BRANK,,BPREL(C)]
|
||
MOVEM S,PRANK+WKING-PIECE(T)
|
||
SKIPGE WKING(T)
|
||
MOVE S,REVERS(S)
|
||
MOVEM S,RPRANK+WKING-PIECE(T)
|
||
SUBI C,1
|
||
CAIE T2,1
|
||
ADDI C,2
|
||
MOVE D,BOARD(C)
|
||
CLEARM BOARD(C)
|
||
SUBI C,2
|
||
CAIE T2,1
|
||
ADDI C,5
|
||
MOVEM D,BOARD(C)
|
||
MOVEM C,PIECEL-PIECE(D)
|
||
LDB S,[BFILE,,BPREL(C)]
|
||
MOVEM S,PFILE-PIECE(D)
|
||
LDB S,[BRANK,,BPREL(C)]
|
||
MOVEM S,PRANK-PIECE(D)
|
||
SKIPGE (D)
|
||
MOVE S,REVERS(S)
|
||
MOVEM S,RPRANK-PIECE(D)
|
||
SOS NMOVES+WKING-PIECE(T)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC6B
|
||
MOVEI B,WKING-PIECE(T)
|
||
PUSHJ P,MMKG1
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC2
|
||
POP P,I
|
||
POPJ P,
|
||
|
||
UMG1: LDB T1,[30300,,A]
|
||
ADDI T1,4*BW+1
|
||
SKIPN I
|
||
ADDI T1,3*BW
|
||
MOVEM T1,GHLOC
|
||
SKIPE ICSW
|
||
PUSHJ P,UMG5
|
||
UMG5A: MOVE T1,PMT+1(I)
|
||
MOVEM T1,GHSD
|
||
TRZ A,170
|
||
MOVEM A,1(T)
|
||
JRST UMG2
|
||
|
||
UMG5: XORI I,1
|
||
PUSHJ P,MMGH2A
|
||
XORI I,1
|
||
POPJ P,
|
||
|
||
|
||
UMG3: CLEARM GHLOC
|
||
CLEARM GHSD
|
||
LDB I,[420100,,@GAMP]
|
||
XORI I,1
|
||
SKIPE ICSW
|
||
PUSHJ P,MMGF3
|
||
JRST UMG4
|
||
|
||
UMOVE5: CAIN T2,3
|
||
JRST UMOVE6
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC1 ;TAKE IT OFF AS QUEEN
|
||
XCT UMT3(I)
|
||
HRRM T2,PIECE(B)
|
||
; MOVE T2,[1,,6]
|
||
; MOVEM T2,PCATV(B)
|
||
LDB T2,[PTIDS,,PIECE(B)]
|
||
CLEARB T1,BDAST(T2)
|
||
DPB T1,[PTIDS,,PIECE(B)]
|
||
MOVNI T2,QNINC
|
||
ADDM T2,PVALUE(B)
|
||
MOVN T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
MOVEI T2,PNBAL(I)
|
||
MOVEM T2,PBALP(B)
|
||
MOVEI T2,PWNV
|
||
MOVEM T2,RPVAL(B)
|
||
ADDM T2,@PBALP(B)
|
||
SOS @PCCPNR(B) ;FLUSH PIECE
|
||
SOS @NPCPT(B) ;FLUSH QUEEN COUNT
|
||
MOVEI T2,NPCTEM
|
||
MOVEM T2,PCCPNR(B)
|
||
MOVEI T2,WPNC(I)
|
||
MOVEM T2,NPCPT(B)
|
||
AOS @NPCPT(B) ;ADD BACK P
|
||
MOVE T2,UMT4(I)
|
||
MOVEM T2,LMGT(B)
|
||
HRRM T2,LMGSTD(B) ;LEAVE LEFT HALF CLEAR!
|
||
MOVE T2,UMT6(I)
|
||
MOVEM T2,RMDTB(B)
|
||
SETOM PLPWN(B)
|
||
MOVEI T2,PID ;UNQUEEN A PAWN
|
||
DPB T2,[PTID,,PIECE(B)]
|
||
MOVEI T2,PIECEL(B)
|
||
MOVEM T2,PPT(B)
|
||
MOVEI T2,LWPWN
|
||
TLNE A,200000
|
||
MOVEI T2,LBPWN
|
||
MOVEM T2,LGLMPT(B)
|
||
MOVEI T1,6*2
|
||
MOVEM T1,PINVF(B)
|
||
MOVSI T1,(SETZ)
|
||
CAILE B,NPCS
|
||
IORM T1,SNFBP(B)
|
||
CAIG B,NPCS
|
||
IORM T1,LMGSTD(B)
|
||
ANDCAM T1,RFPCS(B)
|
||
ANDCAM T1,DDPCS(B)
|
||
ANDCAM T1,SLDPC(B) ;CODE BELOW USES T1
|
||
MOVE T2,B
|
||
CAIL T2,NPCS
|
||
SUBI T2,NPCS
|
||
MOVNS T2
|
||
ROT T1,(T2)
|
||
MOVEI T2,PTB
|
||
SKIPGE PIECE(B)
|
||
ADDI T2,PTBL
|
||
ANDCAM T1,PTBQ-PTB(T2)
|
||
HRLI T2,-12.
|
||
MOVEI C,0
|
||
AOS T,GAMP
|
||
DPB C,[300,,(T)]
|
||
TDNE T1,PTBP+2*PTBL(C)
|
||
IORM T1,PTBP-PTB(T2)
|
||
AOS C
|
||
AOBJN T2,.-3
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC7
|
||
JRST UMOVE1
|
||
|
||
|
||
UMOVE6: MOVEI T2,-BW(T) ;TAKE BACK E.P. CAPT
|
||
TLNE A,200000
|
||
ADDI T2,2*BW
|
||
MOVEI S,PIECE(D)
|
||
MOVEM S,BOARD(T2)
|
||
MOVEM T2,PIECEL(D)
|
||
LDB T1,[BFILE,,BPREL(T2)]
|
||
MOVEM T1,PFILE(D)
|
||
LDB T1,[BRANK,,BPREL(T2)]
|
||
MOVEM T1,PRANK(D)
|
||
SKIPGE PIECE(D)
|
||
MOVE T1,REVERS(T1)
|
||
MOVEM T1,RPRANK(D)
|
||
MOVE T2,RPVAL(D)
|
||
ADDM T2,@PBALP(D)
|
||
; AOS @PCCPNR(D) ;NOT A PIECE
|
||
AOS @NPCPT(D)
|
||
; AOS @NPCP1(D) ;NOT A B
|
||
MOVEM T,GHLOC
|
||
MOVE T1,PMT+1(I)
|
||
MOVEM T1,GHSD
|
||
TLZ A,400000
|
||
SKIPN ICSW
|
||
JRST UMOVE7
|
||
PUSHJ P,MMIC8
|
||
MOVE T1,GHLOC
|
||
PUSHJ P,UMG5
|
||
JRST UMOVE7
|
||
|
||
UMT3: MOVEI T2,MMWPWN
|
||
MOVEI T2,MMBPWN
|
||
|
||
UMT4: SETZ LMWPW
|
||
SETZ LMBPW
|
||
|
||
UMT5: AOS NUMORP+1
|
||
AOS NUMORP
|
||
AOS NUMORP+1
|
||
|
||
UMT6: RMWP
|
||
RMBP
|
||
|
||
PMT: 1
|
||
-1
|
||
1
|
||
POPAJ: POP P,A
|
||
POPJ P,
|
||
|
||
MMOVE3: LDB D,[300,,A]
|
||
CAILE D,2
|
||
JRST MMV3A
|
||
PUSH P,D
|
||
PUSH P,A
|
||
PUSHJ P,CAT
|
||
POP P,A
|
||
POP P,D
|
||
MOVEI T,0
|
||
TLNE A,200000
|
||
MOVEI T,NPCS
|
||
MOVE T1,PIECEL+WKING-PIECE(T)
|
||
MOVEM T1,OKGLCN
|
||
SOJN D,MLQCAS
|
||
|
||
MLKCAS: PUSHJ P,LKCAS
|
||
POPJ P,
|
||
MLCK1: SKIPE ICSW
|
||
PUSHJ P,MMIC5
|
||
MOVE T1,PIECEL+WKING-PIECE(T)
|
||
MOVE T2,BOARD(T1)
|
||
CLEARM BOARD(T1)
|
||
MOVEM T2,BOARD-2(T1)
|
||
SUBI T1,2
|
||
MOVEM T1,PIECEL+WKING-PIECE(T)
|
||
LDB T2,[BFILE,,BPREL(T1)]
|
||
MOVEM T2,PFILE+WKING-PIECE(T)
|
||
LDB T2,[BRANK,,BPREL(T1)]
|
||
MOVEM T2,PRANK+WKING-PIECE(T)
|
||
SKIPGE WKING(T)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK+WKING-PIECE(T)
|
||
MOVE T1,PIECEL+WKR-PIECE(T)
|
||
MOVE T2,BOARD(T1)
|
||
CLEARM BOARD(T1)
|
||
MOVEM T2,BOARD+2(T1)
|
||
ADDI T1,2
|
||
MOVEM T1,PIECEL+WKR-PIECE(T)
|
||
LDB T2,[BFILE,,BPREL(T1)]
|
||
MOVEM T2,PFILE+WKR-PIECE(T)
|
||
LDB T2,[BRANK,,BPREL(T1)]
|
||
MOVEM T2,PRANK+WKR-PIECE(T)
|
||
SKIPGE WKR(T)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK+WKR-PIECE(T)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC6
|
||
MOVEI T2,1
|
||
MMOVE6: MOVEM T2,NMKING(I)
|
||
MOVE ZR,STVDT1(T2)
|
||
ADDM ZR,@CDVPNR(I)
|
||
AOS NMOVES+WKING-PIECE(T)
|
||
MOVEI B,WKING-PIECE(T)
|
||
PUSHJ P,MMKG1
|
||
JRST MMOVE5
|
||
|
||
MLQCAS: PUSHJ P,LQCAS
|
||
POPJ P,
|
||
MLCQ1: SKIPE ICSW
|
||
PUSHJ P,MMIC5Q
|
||
MOVE T1,PIECEL+WKING-PIECE(T)
|
||
MOVE T2,BOARD(T1)
|
||
CLEARM BOARD(T1)
|
||
MOVEM T2,BOARD+2(T1)
|
||
ADDI T1,2
|
||
MOVEM T1,PIECEL+WKING-PIECE(T)
|
||
LDB T2,[BFILE,,BPREL(T1)]
|
||
MOVEM T2,PFILE+WKING-PIECE(T)
|
||
LDB T2,[BRANK,,BPREL(T1)]
|
||
MOVEM T2,PRANK+WKING-PIECE(T)
|
||
SKIPGE WKING(T)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK+WKING-PIECE(T)
|
||
MOVE T1,PIECEL+WQR-PIECE(T)
|
||
MOVE T2,BOARD(T1)
|
||
CLEARM BOARD(T1)
|
||
MOVEM T2,BOARD-3(T1)
|
||
SUBI T1,3
|
||
MOVEM T1,PIECEL+WQR-PIECE(T)
|
||
LDB T2,[BFILE,,BPREL(T1)]
|
||
MOVEM T2,PFILE+WQR-PIECE(T)
|
||
LDB T2,[BRANK,,BPREL(T1)]
|
||
MOVEM T2,PRANK+WQR-PIECE(T)
|
||
SKIPGE WQR(T)
|
||
MOVE T2,REVERS(T2)
|
||
MOVEM T2,RPRANK+WQR-PIECE(T)
|
||
SKIPE ICSW
|
||
PUSHJ P,MMIC6Q
|
||
MOVEI T2,2
|
||
JRST MMOVE6
|
||
|
||
|
||
LKCAS: SKIPN NMOVES+WKING-PIECE(T)
|
||
SKIPE NMOVES+WKR-PIECE(T)
|
||
POPJ P,
|
||
SKIPN PIECEL+WKR-PIECE(T)
|
||
POPJ P,
|
||
MOVE T1,PIECEL+WKING-PIECE(T)
|
||
SKIPN BOARD-1(T1)
|
||
SKIPE BOARD-2(T1)
|
||
POPJ P,
|
||
SKIPE T
|
||
ADDI T1,BD2
|
||
SKIPE BA(T1)
|
||
POPJ P,
|
||
SKIPN BA-1(T1)
|
||
SKIPE BA-2(T1)
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
LQCAS: SKIPN NMOVES+WKING-PIECE(T)
|
||
SKIPE NMOVES+WQR-PIECE(T)
|
||
POPJ P,
|
||
MOVE T1,PIECEL+WKING-PIECE(T)
|
||
SKIPN BOARD+1(T1)
|
||
SKIPE BOARD+2(T1)
|
||
POPJ P,
|
||
SKIPE PIECEL+WQR-PIECE(T)
|
||
SKIPE BOARD+3(T1)
|
||
POPJ P,
|
||
SKIPE T
|
||
ADDI T1,BD2
|
||
SKIPE BA(T1)
|
||
POPJ P,
|
||
SKIPN BA+1(T1)
|
||
SKIPE BA+2(T1)
|
||
POPJ P,
|
||
AOS (P)
|
||
POPJ P,
|
||
|
||
IFN DSPLY,[
|
||
TDISPL: SKIPN T1,STPLVL
|
||
JRST TD8
|
||
CAME T1,LMGD
|
||
JRST TD7
|
||
TD8:; SKIPN TT,DBS1
|
||
; JRST TD9
|
||
; CAIN TT,2
|
||
; JRST TD8A ;DISPLAY FEEDOVERS
|
||
; MOVEI B,TYO1
|
||
; PUSHJ T,TDFROB
|
||
TD9: MOVEI T1,1
|
||
SKIPE WALLP
|
||
CAME T1,LMGD
|
||
JRST TD11
|
||
MOVEI B,PILPT
|
||
PUSHJ T,TDFROB
|
||
PUSHJ P,DCRR
|
||
PUSHJ P,DCRR
|
||
TD11:; SKIPE DBS1
|
||
; JRST TD1
|
||
JRST TD7
|
||
|
||
;TD8A: MOVE TT,LMGD ;OLD DISPLAY FEEDOVER STUFF
|
||
; CAMG TT,HK1V
|
||
; JRST TD7
|
||
;; PUSH P,DBS1
|
||
;; CLEARM DBS1
|
||
; PUSH P,I
|
||
; PUSH P,T
|
||
; PUSHJ P,DISUP
|
||
; POP P,T
|
||
; POP P,I
|
||
;; POP P,DBS1
|
||
; JRST TD7A
|
||
]
|
||
|
||
TDFROB: PUSH P,B
|
||
HRRZ A,LGLMST
|
||
ADDI A,1
|
||
MOVEI B,1-1(P) ; 1 EXCEPT FOR PUSH OF B
|
||
PUSHJ P,4SORT ;SO PRINTOUT IS IN SORTED ORDER
|
||
POP P,B
|
||
HRRZ A,TEFAL
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
MOVE TT,LGLMST
|
||
TD2: CAMN TT,P
|
||
POPJ T,
|
||
MOVE A,1(TT)
|
||
PUSHJ P,PPMMV
|
||
MOVE T1,3(TT)
|
||
MOVEI A,"!
|
||
TLNE T1,BMTHR
|
||
PUSHJ P,(B)
|
||
MOVEI A,"#
|
||
TLNE T1,BIDSF
|
||
PUSHJ P,(B)
|
||
PUSHJ P,DSPACE
|
||
MOVE A,2(TT)
|
||
PUSHJ P,DPT
|
||
; MOVEI A,"-
|
||
; LDB T1,[220100,,3(TT)]
|
||
; SKIPE T1
|
||
; PUSHJ P,(B)
|
||
PUSHJ P,DSPACE
|
||
PUSHJ P,MCRR
|
||
ADD TT,[NWDPM,,NWDPM]
|
||
JRST TD2
|
||
|
||
PPMMV: MOVEM A,PPMMVT
|
||
HRRZS A
|
||
CAIL A,376
|
||
JRST TD2A
|
||
HLRZ A,PPMMVT
|
||
PUSHJ P,PCOUT
|
||
MOVEI A,"-
|
||
PUSHJ P,(B)
|
||
HRRZ A,PPMMVT
|
||
PUSHJ P,SQOUT
|
||
JRST DSPACE
|
||
|
||
TD2A: SOUT TYPMT-376(A)
|
||
JRST DSPACE
|
||
|
||
PPMMVT: 0
|
||
|
||
|
||
MVD1A: TDZA T2,T2
|
||
MVD1: MOVNI T2,1
|
||
MOVE T1,LMGD
|
||
SOJN T1,CPOPJ
|
||
PUSH P,A
|
||
PUSH P,I
|
||
PUSH P,B
|
||
PUSH P,R
|
||
MOVEI B,TYO
|
||
SKIPE WALLP
|
||
HRROI B,PILPT
|
||
JUMPN T2,MVD1B
|
||
MOVEI A,"*
|
||
PUSHJ P,(B)
|
||
PUSHJ P,DTAB
|
||
MVD1B: PUSHJ P,TYPLM
|
||
PUSHJ P,DSPACE
|
||
MOVE R,CVPR
|
||
PUSHJ P,TYPLNE
|
||
PUSHJ P,DCRR
|
||
MOVE A,(P)
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DTAB
|
||
MOVE A,-3(P)
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DTAB
|
||
MOVE A,Q
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DTAB
|
||
IFE TS,[
|
||
MOVEI T1,0
|
||
EXCH T1,..TIME
|
||
ADDM T1,.TIME
|
||
PUSHJ P,.DPT
|
||
]
|
||
IFN TS,[
|
||
.SUSET [.RRUNT,,A]
|
||
EXCH A,..TSTM
|
||
SUB A,..TSTM
|
||
PUSH P,C
|
||
PUSH P,D
|
||
MOVN C,A
|
||
PUSHJ P,TSMTP
|
||
POP P,D
|
||
POP P,C
|
||
]
|
||
PUSHJ P,DCRR
|
||
POP P,R
|
||
POP P,B
|
||
POP P,I
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
|
||
TD1:
|
||
IFN DSPLY,[
|
||
MOVEI B,TYO
|
||
SKIPE WALLP
|
||
MOVEI B,PNTDIS
|
||
PUSHJ P,DCRR
|
||
MOVSI T,-8
|
||
TD3: MOVSI TT,-8
|
||
TD6: MOVE A,WAV+2*BW+1(T)
|
||
PUSHJ P,DPT
|
||
MOVE A,DPTNC
|
||
CAIE A,3
|
||
PUSHJ P,DSPACE
|
||
PUSHJ P,DSPACE
|
||
PUSHJ P,(B)
|
||
AOS T
|
||
AOBJN TT,TD6
|
||
PUSHJ P,DTAB
|
||
MOVSI TT,-8
|
||
SUBI T,8
|
||
TD6A: HLRZ A,BAV+2*BW+1(T)
|
||
PUSHJ P,DPT
|
||
MOVE A,DPTNC
|
||
CAIE A,3
|
||
PUSHJ P,DSPACE
|
||
PUSHJ P,DSPACE
|
||
PUSHJ P,(B)
|
||
AOS T
|
||
AOBJN TT,TD6A
|
||
|
||
; PUSHJ P,DTAB
|
||
; MOVSI TT,-8
|
||
; SUBI T,8
|
||
;TD6B: HLRZ A,BA+2*BW+1(T)
|
||
; PUSHJ P,DPT
|
||
; PUSHJ P,DSPACE
|
||
; AOS T
|
||
; AOBJN TT,TD6B
|
||
|
||
PUSHJ P,DCRR
|
||
AOS T
|
||
AOBJN T,TD3
|
||
MOVE A,LMGD
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DSPACE
|
||
SOUT [ASCII /WHITE MIN !/]
|
||
MOVE A,BPREV
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DSPACE
|
||
SOUT [ASCII /BLACK MIN !/]
|
||
MOVE A,BPREV+1
|
||
PUSHJ P,DPT
|
||
SOUT [ASCII / PCBAL !/]
|
||
MOVE A,PCBAL
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DSPACE
|
||
MOVE A,PCBAL+1
|
||
PUSHJ P,DPT
|
||
SOUT [ASCII / PNBAL !/]
|
||
MOVE A,PNBAL
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DSPACE
|
||
MOVE A,PNBAL+1
|
||
PUSHJ P,DPT
|
||
PUSHJ P,DCRR
|
||
PUSHJ P,PWNPNT
|
||
PUSHJ P,.DISBD
|
||
; SKIPE DBS2
|
||
; JRST TD7A
|
||
]
|
||
CLEARM CVPR
|
||
MOVEI D,-1
|
||
JSP ZR,EVM5B2
|
||
|
||
DSPACE: MOVEI A,40
|
||
JRST (B)
|
||
|
||
DTAB: MOVEI A,11
|
||
JRST (B)
|
||
|
||
DCOLON: MOVEI A,":
|
||
JRST (B)
|
||
|
||
DSLASH: MOVEI A,"/
|
||
JRST (B)
|
||
|
||
DPERD: MOVEI A,".
|
||
JRST (B)
|
||
|
||
FORMF: MOVEI A,14
|
||
JRST (B)
|
||
|
||
LATYO: MOVEI A,"_
|
||
JRST TYO
|
||
|
||
QMTYO: MOVEI A,"?
|
||
JRST TYO
|
||
|
||
;TD7A: PUSHJ P,TYI ;OLD STOP LEVEL SELECTOR IN DEBUG MODE.
|
||
; CLEARM STPLVL
|
||
; CAIL A,"0
|
||
; CAILE A,"9
|
||
; JRST TD7
|
||
; SUBI A,"0
|
||
; MOVEM A,STPLVL
|
||
; JRST TD7
|
||
|
||
|
||
|
||
APSQ: PUSHJ P,GETONM ;PRINT SQUARE NUMBER
|
||
MOVE A,C
|
||
MOVEI B,TYO
|
||
JRST SQOUT
|
||
|
||
SQOUT: PUSH P,A ;SQUARE IN A
|
||
ANDI A,177
|
||
LDB T1,[BFILE,,BPREL(A)]
|
||
SKIPN ALGSW
|
||
JRST SQOUT1
|
||
LDB A,[BFILE,,BPREL(A)]
|
||
MOVE A,REVERS(A)
|
||
ADDI A,"A-1
|
||
PUSHJ P,(B)
|
||
MOVE A,(P)
|
||
ANDI A,177
|
||
LDB A,[BRANK,,BPREL(A)]
|
||
ADDI A,"0
|
||
PUSHJ P,(B)
|
||
SKIPL ALGSW
|
||
JRST SQOUT2
|
||
PUSHJ P,DSPACE
|
||
MOVE A,(P)
|
||
ANDI A,177
|
||
SQOUT1: SOUT TXFILE(T1)
|
||
CAIE T1,4
|
||
CAIN T1,5
|
||
AOS SPNDD ;TWO LETTER SQUARE
|
||
LDB A,[BRANK,,BPREL(A)]
|
||
JUMPE I,.+3
|
||
MOVNS A
|
||
ADDI A,9
|
||
ADDI A,"0
|
||
PUSHJ P,(B)
|
||
SQOUT2: LDB A,[170300,,(P)]
|
||
TRNE A,7
|
||
SOUT PROTXT-4(A)
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
PCOUTZ: PUSH P,PGMCNT
|
||
SKIPGE PGMCNT
|
||
CLEARM PGMCNT ;PRINT PROMOTED PAWN AS "P"
|
||
PUSHJ P,PCOUTP
|
||
POP P,PGMCNT
|
||
POPJ P,
|
||
|
||
APPC: PUSHJ P,GETONM ;PRINT NUMERIC PIECE NUMBER
|
||
MOVE A,C
|
||
MOVEI B,TYO
|
||
JRST PCOUT
|
||
|
||
PCOUT: SETOM PGMCNT
|
||
PCOUTP: JUMPE A,PCOUT6
|
||
CAIN A,77
|
||
JRST PCOUT7
|
||
PUSH P,C ;PIECE IN A
|
||
PUSH P,D
|
||
LDB C,[PTID,,PIECE(A)]
|
||
MOVE C,TXTB1(C)
|
||
SKIPL PGMCNT
|
||
JRST PCOUT2
|
||
MOVEM C,PCTXT
|
||
PCOUT4: SOUT PCTXT
|
||
POP P,D
|
||
POP P,C
|
||
POPJ P,
|
||
|
||
IFN DSPLY,[
|
||
DU: MOVEM 17,DUACS+17
|
||
MOVEI 17,DUACS
|
||
BLT 17,DUACS+16
|
||
MOVE 17,DUACS+17
|
||
IFN TS, SETOM NOINCU
|
||
PUSHJ P,DISUP
|
||
MOVSI 17,DUACS
|
||
BLT 17,17
|
||
POPJ P,
|
||
|
||
DUACS: BLOCK 20
|
||
]
|
||
|
||
PCOUT2: SKIPG D,PLPWN(A)
|
||
JRST PCOUT5 ;NOT PROMOTED P
|
||
CAML D,PGMCNT
|
||
MOVSI C,(ASCIZ /P/)
|
||
PCOUT5: MOVEM C,PCTXT
|
||
JRST PCOUT4
|
||
|
||
PCOUT6: SOUT [ASCIZ /NIL/]
|
||
POPJ P,
|
||
|
||
PCOUT7: SOUT [ASCIZ /G/]
|
||
POPJ P,
|
||
|
||
PCTXT: 0
|
||
|
||
TXFILE: ASCIZ /0/
|
||
ASCIZ /KR/
|
||
ASCIZ /KN/
|
||
ASCIZ /KB/
|
||
ASCIZ /K/
|
||
ASCIZ /Q/
|
||
ASCIZ /QB/
|
||
ASCIZ /QN/
|
||
ASCIZ /QR/
|
||
ASCIZ /9/
|
||
|
||
|
||
DPTS: MOVEI T1,40-"0
|
||
HRLM T1,(P)
|
||
PUSH P,[OCTP2]
|
||
DPT: SETOM DPTNC
|
||
MOVE T1,A
|
||
JUMPGE T1,DPT2
|
||
MOVEI A,"-
|
||
AOS DPTNC
|
||
PUSHJ P,(B)
|
||
MOVNS T1
|
||
DPT2: IDIVI T1,10.
|
||
HRLM T2,(P)
|
||
SKIPE T1
|
||
PUSHJ P,DPT2
|
||
OCTP2: HLRE A,(P)
|
||
ADDI A,"0
|
||
AOS DPTNC
|
||
JRST (B)
|
||
|
||
DPTNC: 0
|
||
|
||
OCTPNT: MOVE T1,A
|
||
OCTP1: LSHC T1,-35.
|
||
LSH T2,-1
|
||
DIVI T1,10
|
||
HRLM T2,(P)
|
||
SKIPE T1
|
||
PUSHJ P,OCTP1
|
||
JRST OCTP2
|
||
|
||
DCRR: MOVEI A,15
|
||
PUSHJ P,(B)
|
||
MOVEI A,12
|
||
JRST (B)
|
||
|
||
|
||
FPFP: MOVE S,A
|
||
CLEARB T1,T2
|
||
JUMPG S,FPFP1
|
||
JUMPE S,FPFP3
|
||
MOVNS S
|
||
MOVEI A,"-
|
||
PUSHJ P,(B)
|
||
FPFP1: CAMGE S,FPFT01
|
||
JRST FPFP4
|
||
CAML S,FPFT8
|
||
AOJA T1,FPFP4
|
||
|
||
FPFP3: MULI S,400
|
||
ASHC T1,-243(S)
|
||
MOVE S,T1
|
||
CLEARM FPFPTEM
|
||
PUSHJ P,FPFP7
|
||
MOVEI A,".
|
||
PUSHJ P,(B)
|
||
MOVNI C,10
|
||
ADD C,FPFPTEM
|
||
MOVE T1,T2
|
||
|
||
FPFP3A: MOVE S,T1
|
||
MULI S,12
|
||
MOVE A,S
|
||
PUSHJ P,FPFP7B
|
||
SKIPE T1
|
||
AOJL C,FPFP3A
|
||
POPJ P,
|
||
|
||
FPFP4: MOVNI T2,6
|
||
MOVEI T,0
|
||
FPFP4A: ADDI T,1(T)
|
||
XCT FPFCP(T1)
|
||
TRZA T,1
|
||
FMPR S,@FPFCP+1(T1)
|
||
FPFP4B: AOJN T2,FPFP4A
|
||
PUSH P,T
|
||
MOVNI T1,-2(T1)
|
||
DPB T1,[10200,,FPFP4C]
|
||
PUSHJ P,FPFP3
|
||
MOVEI A,105
|
||
PUSHJ P,(B)
|
||
FPFP4C: MOVEI A,"+
|
||
PUSHJ P,(B)
|
||
POP P,S
|
||
FPFP7: JUMPE S,FPFP71
|
||
IDIVI S,12
|
||
AOS FPFPTEM
|
||
FPFP7A: HRLM T1,(P)
|
||
JUMPE S,FPFP71
|
||
PUSHJ P,FPFP7
|
||
|
||
|
||
FPFP71: HLRE A,(P)
|
||
FPFP7B: ADDI A,60
|
||
JRST (B)
|
||
1.0^32.
|
||
1.0^16.
|
||
FPFT8: 1.0^8
|
||
1.0^4
|
||
1.0^2
|
||
1.0^1
|
||
FPFT: 1.0^0
|
||
1.0^-32.
|
||
1.0^-16.
|
||
1.0^-8
|
||
1.0^-4
|
||
1.0^-2
|
||
FPFT01: 1.0^-1
|
||
FPFT0:
|
||
FPFCP: CAMLE S,FPFT0(T2)
|
||
CAMGE S,FPFT(T2)
|
||
T2,,FPFT0
|
||
|
||
FPFPTEM: 0
|
||
|
||
SORT: CAIL A,-STWPM(B)
|
||
POPJ P,
|
||
SORT3: MOVE C,A
|
||
MOVEI T1,0
|
||
SORT2: HRRZ ZR,1(C)
|
||
HRRZ D,STWPM+1(C)
|
||
CAMGE ZR,D
|
||
JRST SORT1 ;EXCH THEM
|
||
ADDI C,STWPM
|
||
CAIGE C,-STWPM(B)
|
||
JRST SORT2
|
||
JUMPN T1,SORT3 ;MAKE ANOTHER PASS
|
||
POPJ P,
|
||
|
||
SORT1: REPEAT STWPM,[
|
||
MOVE ZR,.RPCNT(C)
|
||
EXCH ZR,.RPCNT+STWPM(C)
|
||
MOVEM ZR,.RPCNT(C)
|
||
]
|
||
ADDI C,STWPM
|
||
CAIGE C,-STWPM(B)
|
||
AOJA T1,SORT2
|
||
JUMPN T1,SORT3
|
||
POPJ P,
|
||
|
||
;SORT: MOVEI C,10000 ;A POINTER AT FIRST ENTRY TO BE SORTED USED ONLY BY PCG
|
||
;SORT1: HRLM B,(P) ;B " LAST +1
|
||
; CAIL A,-STWPM+1(B) ;ONE OR ZERO FROBS
|
||
; JRST SORT7
|
||
; PUSH P,A
|
||
;SORT3: TDNE C,1(A)
|
||
; JRST SORT4
|
||
; SUBI B,STWPM
|
||
; TDNN C,1(B)
|
||
; JRST SORT2
|
||
;REPEAT STWPM,[
|
||
; MOVE D,.RPCNT(A)
|
||
; EXCH D,.RPCNT(B)
|
||
; MOVEM D,.RPCNT(A)
|
||
;]
|
||
;SORT4: ADDI A,STWPM
|
||
;SORT2: CAME A,B
|
||
; JRST SORT3
|
||
; ROT C,-1
|
||
; POP P,A
|
||
; JUMPL C,SORT6
|
||
; PUSHJ P,SORT1
|
||
; HLRZ B,(P)
|
||
; PUSHJ P,SORT1
|
||
;SORT6: ROT C,1
|
||
;SORT7: HLRZ A,(P)
|
||
; POPJ P,
|
||
|
||
4SORT: MOVEI C,10000 ;A POINTER AT FIRST ENTRY TO BE 4SORTED
|
||
4SORT1: HRLM B,(P) ;B " LAST +1
|
||
CAIL A,-4(B) ;ONE OR ZERO FROBS
|
||
JRST 4SORT7
|
||
PUSH P,A
|
||
4SORT3: TDNE C,1(A)
|
||
JRST 4SORT4
|
||
SUBI B,4
|
||
TDNN C,1(B)
|
||
JRST 4SORT2
|
||
MOVE D,(A)
|
||
EXCH D,(B)
|
||
MOVEM D,(A)
|
||
MOVE D,1(A)
|
||
EXCH D,1(B)
|
||
MOVEM D,1(A)
|
||
MOVE D,2(A)
|
||
EXCH D,2(B)
|
||
MOVEM D,2(A)
|
||
MOVE D,3(A)
|
||
EXCH D,3(B)
|
||
MOVEM D,3(A)
|
||
4SORT4: ADDI A,4
|
||
4SORT2: CAME A,B
|
||
JRST 4SORT3
|
||
ROT C,-1
|
||
POP P,A
|
||
JUMPL C,4SORT6
|
||
PUSHJ P,4SORT1
|
||
HLRZ B,(P)
|
||
PUSHJ P,4SORT1
|
||
4SORT6: ROT C,1
|
||
4SORT7: HLRZ A,(P)
|
||
POPJ P,
|
||
CONSTANTS
|
||
IFN BOOK,[
|
||
BKSMT: BLOCK BMXS+1
|
||
BKSMTV: BLOCK BMXS+1
|
||
BBK: BLOCK BKSS/6+1
|
||
|
||
]
|
||
ICSTO: MOVE T,[-LICCBF,,ICCBF-1] ;STORE CAT DATA
|
||
MOVSI B,-LICCST
|
||
ICSTO1: SKIPL T1,ICCST(B)
|
||
JRST ICSTO2 ;STORE PIECE SIZE ARRAY OR FILE ARRAY
|
||
MOVEI T2,8
|
||
ICSTO3: HRLI T1,-8
|
||
PUSH T,2*BW+1(T1)
|
||
AOBJN T1,.-1
|
||
ADDI T1,2
|
||
SOJG T2,ICSTO3
|
||
ICSTO4: AOBJN B,ICSTO1
|
||
MOVE T,[-LICPINB,,ICPINB-1] ;STORE PINT
|
||
MOVSI B,-NPC
|
||
ICPINS: SKIPE T1,PINT+1(B)
|
||
JRST ICPIN1
|
||
ICPIN2: AOBJN B,ICPINS
|
||
PUSH T,[0]
|
||
POPJ P,
|
||
|
||
ICSTO2: TLNE T1,40000
|
||
JRST ICSTO6 ;WORD
|
||
TLNE T1,200000
|
||
JRST ICSTO5 ;FILE
|
||
HRLI T1,-NPC
|
||
PUSH T,1(T1)
|
||
AOBJN T1,.-1
|
||
JRST ICSTO4
|
||
|
||
ICSTO5: HRLI T1,-8
|
||
PUSH T,1(T1)
|
||
AOBJN T1,.-1
|
||
JRST ICSTO4
|
||
|
||
ICSTO6: PUSH T,(T1)
|
||
JRST ICSTO4
|
||
ICCMPT: MOVEI B,TYO ;DEVICE IN B RECS OUTPUT
|
||
ICCMP: CLEARM ICERRF
|
||
MOVEI T,ICCBF
|
||
MOVSI C,-LICCST
|
||
ICCM1: SKIPL T1,ICCST(C)
|
||
JRST ICCM2
|
||
HRLI T1,A ;T1 NOW ARRAY (A)
|
||
MOVEI A,2*BW+1
|
||
MOVEI T2,8
|
||
ICCM3: HRLI A,-8
|
||
ICCM4: MOVE D,@T1
|
||
MOVE Q,(T)
|
||
CAME D,Q
|
||
PUSHJ P,ICCER
|
||
AOS T
|
||
AOBJN A,ICCM4
|
||
ADDI A,2
|
||
SOJG T2,ICCM3
|
||
ICCM5: AOBJN C,ICCM1
|
||
MOVEI T1,ICPINB
|
||
ICMP1B: MOVEI T2,400000 ;CLEAR CHECK BITS
|
||
ANDCAB T2,(T1)
|
||
JUMPE T2,ICMP1A
|
||
AOJA T1,ICMP1B
|
||
|
||
ICMP1A: MOVE T1,[-NPC,,1] ;CHECK PINT
|
||
MOVEI T2,ICPINB
|
||
ICMP1: MOVEM T2,ICMPT1
|
||
SKIPN Q,(T2)
|
||
JRST ICMP2 ;THATS ALL PINS STORED
|
||
ICMP4: SKIPE D,PINT(T1)
|
||
JRST ICMP3
|
||
CAIN Q,(T1)
|
||
JRST ICMPP1 ;ERROR
|
||
AOBJN T1,ICMP4
|
||
PTTY [ASCII /PIN CHKR ERROR!/]
|
||
|
||
|
||
ICMP3: CAIE Q,(T1)
|
||
JRST ICMPP1 ;ERROR
|
||
ICMP6: MOVE J,1(D)
|
||
ICMP5: MOVE R,1(T2)
|
||
TLNN R,-1
|
||
JRST ICMPP2 ;ERROR
|
||
CAME J,R
|
||
AOJA T2,ICMP5
|
||
MOVEI R,400000
|
||
IORM R,1(T2)
|
||
MOVE T2,ICMPT1
|
||
HRRZ D,(D)
|
||
JUMPN D,ICMP6
|
||
ICMP5A: MOVE R,1(T2)
|
||
TLNN R,-1
|
||
JRST ICMP2B ;OK
|
||
TRNE R,400000
|
||
AOJA T2,ICMP5A
|
||
ICMPP2: PUSHJ P,ICTPD ;ERROR TYPE INFO ABT PICE IN T1 STORAGE PNTED TO BY ICMPT1
|
||
PUSHJ P,ICTSD
|
||
ICMP2B: AOS T2,ICMPT1
|
||
ICMP2A: MOVE A,(T2)
|
||
TLNE A,-1
|
||
AOJA T2,ICMP2A
|
||
ICMPE1: AOBJN T1,ICMP1
|
||
SKIPN (T2)
|
||
JRST ICMPX
|
||
MOVEM T2,ICMPT1
|
||
PUSHJ P,ICTSD
|
||
JRST ICMP2B
|
||
|
||
ICMP2: SKIPE PINT(T1)
|
||
JRST ICMPE
|
||
AOBJN T1,ICMP2
|
||
ICMPX: POPJ P,
|
||
|
||
ICMPT1: 0 ;PNTR TO STORED DATA
|
||
|
||
|
||
ICMPP1: ISOUT [.ASCII /ARY NIL/]
|
||
PUSHJ P,ICTSD
|
||
SUB T1,[1,,1]
|
||
JRST ICMP2B
|
||
|
||
ICMPE: ISOUT [.ASCII /STORED NIL/]
|
||
PUSHJ P,ICTPD
|
||
JRST ICMPE1
|
||
|
||
ICPIN1: MOVEI T2,1(B)
|
||
PUSH T,T2
|
||
ICPIN3: PUSH T,1(T1)
|
||
HRRZ T1,(T1)
|
||
JUMPN T1,ICPIN3
|
||
JRST ICPIN2
|
||
|
||
ICCM2: TLNE T1,40000
|
||
JRST ICCM8 ;WORD
|
||
TLNE T1,200000
|
||
JRST ICCM7 ;FILE ORIENTED
|
||
MOVE A,[-NPC,,1]
|
||
ICCM6: AOS T1
|
||
SKIPN PIECEL(A)
|
||
JRST ICCM6A
|
||
TLNE T1,100000
|
||
JRST ICCM6B
|
||
SKIPL LMGT(A)
|
||
JRST ICCM6A
|
||
ICCM6B: MOVE D,(T1)
|
||
MOVE Q,(T)
|
||
CAME D,Q
|
||
PUSHJ P,ICCER
|
||
ICCM6A: AOS T
|
||
AOBJN A,ICCM6
|
||
JRST ICCM5
|
||
|
||
ICCM8: MOVE D,(T1)
|
||
MOVE Q,(T)
|
||
CAME D,Q
|
||
PUSHJ P,ICCER
|
||
AOJA T,ICCM5
|
||
|
||
ICCM7: MOVE A,[-8,,1]
|
||
ICCM7A: AOS T1
|
||
MOVE D,(T1)
|
||
MOVE Q,(T)
|
||
CAME D,Q
|
||
PUSHJ P,ICCER
|
||
AOS T
|
||
AOBJN A,ICCM7A
|
||
JRST ICCM5
|
||
|
||
ICCER: SETOM ICERRF
|
||
XCT ICEDT(C)
|
||
POPJ P,
|
||
|
||
|
||
ICERRF: 0 ;-1 IF ERROR DETECTED
|
||
|
||
|
||
ICCBF: BLOCK NPCAR*NPC+NBDAR*64.+NFLAR*8+NWDAR
|
||
LICCBF==.-ICCBF+1
|
||
LICPINB==40.
|
||
ICPINB: BLOCK LICPINB
|
||
|
||
ICPINP: LDB T,[PINATP,,D] ;PRINT PIN IN D
|
||
LDB TT,[PINOPS,,D]
|
||
LDB S,[PINBS,,D]
|
||
LDB I,[PINDIR,,D]
|
||
ISOUT [.ASCII ?*P!T (#=*O!T) PINNING *S!TT TO *S!S IN *D!I DIR?]
|
||
ICPINX: SETOM ICERRF
|
||
POPJ P,
|
||
|
||
ICTPD: ISOUT [.ASCII ?PINT *P!T1, (#=*H!T1)?]
|
||
MOVE J,PINT(T1)
|
||
ICTPD1: MOVE D,1(J)
|
||
PUSHJ P,ICPINP
|
||
SKIPE J,(J)
|
||
JRST ICTPD1
|
||
JRST ICPINX
|
||
|
||
|
||
ICTSD: MOVE J,ICMPT1
|
||
MOVE D,(J)
|
||
ISOUT [.ASCII ?STORED *P!D, (#=*O!D)?]
|
||
ICTSP1: MOVE D,1(J)
|
||
TLNN D,-1
|
||
POPJ P,
|
||
PUSHJ P,ICPINP
|
||
AOJA J,ICTSP1
|
||
|
||
|
||
CONB1D: TDZA R,R
|
||
CONB2D: MOVEI R,4
|
||
HRLI R,-4
|
||
MOVE TT,[441100,,D]
|
||
MOVE S,[441100,,Q]
|
||
COND1: ILDB ZR,TT
|
||
ILDB I,S
|
||
CAME I,ZR
|
||
ISOUT [.ASCII ?CPY SAYS *S!I ARY *S!ZR ONEB AT *S!A (=*H!A) IN *D!R?]
|
||
AOBJN R,COND1
|
||
POPJ P,
|
||
|
||
|
||
CBDA1D: TDZA R,R
|
||
CBDA2D: MOVEI R,6
|
||
CBDAD: HRLI R,-6
|
||
MOVE TT,[440600,,D]
|
||
MOVE S,[440600,,Q]
|
||
CBDAD1: ILDB ZR,TT
|
||
ILDB I,S
|
||
CAME I,ZR
|
||
ISOUT [.ASCII ?CPY SAYS *P!I ARY SAYS *P!ZR ATTACKING *S!A (=*H!A) FROM *D!R?]
|
||
AOBJN R,CBDAD1
|
||
POPJ P,
|
||
|
||
CBDA3D: MOVEI R,12.
|
||
JRST CBDAD
|
||
|
||
CBDBKD: MOVSI R,-8
|
||
MOVE TT,[440400,,D]
|
||
MOVE ZR,[440400,,Q]
|
||
CBDB1: ILDB S,TT
|
||
ILDB I,ZR
|
||
MOVE S,BDAST(S)
|
||
MOVE I,BDAST(I)
|
||
CAME I,S
|
||
ISOUT [.ASCII ?CPY SAYS *P!I ARY *P!S BLOCKED AT *S!A (=*H!A) FROM *D!R?]
|
||
AOBJN R,CBDB1
|
||
POPJ P,
|
||
|
||
|
||
|
||
|
||
|
||
;FLOATING POINT SINGLE PRECISION LOGARITHM FUNCTION
|
||
;LOG(ABSF(X)) IS CALCULATED BY THE SUBROUTINE, AND AN
|
||
;ARGUMENT OF ZERO IS RETURNED AS MINUS INFINITY. THE ALGORITHM IS
|
||
|
||
;LOGE(X) = (I + LOG2(F))*LOGE(2)
|
||
;WHERE X = (F/2)*2^(I+1), AND LOG2(F) IS GIVEN BY
|
||
;LOG2(F) = C1*Z + C3*Z^3 + C5*Z^5 - 1/2
|
||
;AND Z = (F-SQRT(2))/(F+SQRT(2))
|
||
|
||
|
||
ALOG: ;ENTRY TO LOGARITHM ROUTINE
|
||
JUMPLE T1, ZERANS ;CHECK FOR ZERO ARGUMENT
|
||
CAIN T1,1 ;CHECK FOR 1.0 ARGUMENT
|
||
JRST ZERANS ;IT IS 1.0 RETURN ZERO ANS.
|
||
FLOAT T1
|
||
ASHC T1, -33 ;SEPARATE FRACTION FROM EXPONENT
|
||
ADDI T1, 211000 ;FLOAT THE EXPONENT AND MULT. BY 2
|
||
MOVSM T1, LS ;NUMBER NOW IN CORRECT FL. FORMAT
|
||
MOVSI T1, 567377 ;SET UP -401.0 IN T1
|
||
FADM T1, LS ;SUBTRACT 401 FROM EXP.*2
|
||
ASH T2, -10 ;SHIFT FRACTION FOR FLOATING
|
||
TLC T2, 200000 ;FLOAT THE FRACTION PART
|
||
FAD T2, L1 ;T2 = T2-SQRT(2.0)/2.0
|
||
MOVE T1, T2 ;PUT RESULTS IN T1
|
||
FAD T1, L2 ;T1 = T1+SQRT(2.0)
|
||
FDV T2, T1 ;T2 = T2/T1
|
||
MOVEM T2, LZ ;STORE NEW VARIABLE IN LZ
|
||
FMP T2, T2 ;CALCULATE Z^2
|
||
MOVE T1, L3 ;PICK UP FIRST CONSTANT
|
||
FMP T1, T2 ;MULTIPLY BY Z^2
|
||
FAD T1, L4 ;ADD IN NEXT CONSTANT
|
||
FMP T1, T2 ;MULTIPLY BY Z^2
|
||
FAD T1, L5 ;ADD IN NEXT CONSTANT
|
||
FMP T1, LZ ;MULTIPLY BY Z
|
||
FAD T1, LS ;ADD IN EXPONENT TO FORM LOG2(X)
|
||
FMP T1, L7 ;MULTIPLY TO FORM LOGE(X)
|
||
FMPR T1,@(P)
|
||
FIX T1 ;RETURN ANS IN T2
|
||
JRST POPJ1
|
||
|
||
ZERANS: MOVEI T2, 0 ;MAKE ANS ZERO
|
||
JRST POPJ1
|
||
|
||
;CONSTANTS
|
||
|
||
L1: 577225754146 ;-0.707106781187
|
||
L2: 201552023632 ;1.414213562374
|
||
L3: 200462532521 ;0.5989786496
|
||
L4: 200754213604 ;0.9614706323
|
||
L5: 202561251002 ;2.8853912903
|
||
L7: 200542710300 ;0.69314718056
|
||
|
||
LS: 0
|
||
LZ: 0
|
||
LB: 0
|
||
|
||
|
||
BDOUT: MOVEI S,"- ;OUTPUT BOARD
|
||
CLEARB T1,T2
|
||
SKIPE BFLIP
|
||
JRST FBDUT4
|
||
BDOUT4: HRLI T2,-8
|
||
BDOUT3: SKIPE C,BOARD+10.*BW-2(T1)
|
||
JRST BDOUT1
|
||
MOVEI A,10.*BW-2(T1)
|
||
CAMN A,GHLOC
|
||
JRST BDOUT5
|
||
MOVE A,S
|
||
PUSHJ P,(B)
|
||
PUSHJ P,(B)
|
||
BDOUT2: XORI S,"-#"*
|
||
SKIPGE QTF
|
||
JRST CRR
|
||
BDOUT6: PUSHJ P,DSPACE
|
||
SOS T1
|
||
AOBJN T2,BDOUT3
|
||
XORI S,"-#"*
|
||
PUSHJ P,DCRR
|
||
SUBI T1,2
|
||
CAIE T2,64.
|
||
JRST BDOUT4
|
||
POPJ P,
|
||
|
||
BDOUT1: LDB D,[PTID,,(C)]
|
||
SKIPG (C)
|
||
ADDI D,6
|
||
SOUT TXTB(D)
|
||
JRST BDOUT2
|
||
|
||
BDOUT5: LDB C,[100,,PLYN]
|
||
SOUT GHTXT(C)
|
||
JRST BDOUT2
|
||
|
||
GHTXT: ASCII /BG!/
|
||
ASCII /WG!/
|
||
|
||
FBDUT4: HRLI T2,-8
|
||
FBDUT3: SKIPE C,BOARD+2*BW+1(T1)
|
||
JRST FBDUT1
|
||
MOVEI A,2*BW+1(T1)
|
||
CAMN A,GHLOC
|
||
JRST FBDUT5
|
||
MOVE A,S
|
||
PUSHJ P,(B)
|
||
PUSHJ P,(B)
|
||
FBDUT2: XORI S,"-#"*
|
||
SKIPGE QTF
|
||
JRST CRR
|
||
FBDUT6: PUSHJ P,DSPACE
|
||
AOS T1
|
||
AOBJN T2,FBDUT3
|
||
XORI S,"-#"*
|
||
PUSHJ P,DCRR
|
||
ADDI T1,2
|
||
CAIE T2,64.
|
||
JRST FBDUT4
|
||
POPJ P,
|
||
|
||
FBDUT1: LDB D,[PTID,,(C)]
|
||
SKIPG (C)
|
||
ADDI D,6
|
||
SOUT TXTB(D)
|
||
JRST FBDUT2
|
||
|
||
FBDUT5: LDB C,[100,,PLYN]
|
||
SOUT GHTXT(C)
|
||
JRST FBDUT2
|
||
|
||
|
||
XBDOUT: SOUT [ASCIZ /2333333334
|
||
/]
|
||
MOVEI S,0
|
||
CLEARB T1,T2
|
||
XBD4: HRLI T2,-8
|
||
SOUT [ASCIZ /9/]
|
||
XBD3: SKIPE C,BOARD+10.*BW-2(T1)
|
||
JRST XBD1
|
||
MOVEI A,"0(S)
|
||
PUSHJ P,(B)
|
||
XBD2: XORI S,1
|
||
SOS T1
|
||
AOBJN T2,XBD3
|
||
MOVEI A,"5
|
||
PUSHJ P,(B)
|
||
XORI S,1
|
||
PUSHJ P,DCRR
|
||
SUBI T1,2
|
||
CAIE T2,64.
|
||
JRST XBD4
|
||
SOUT [ASCIZ /8777777776
|
||
/]
|
||
POPJ P,
|
||
|
||
XBD1: LDB D,[PTID,,(C)]
|
||
SKIPG (C)
|
||
ADDI D,6
|
||
MOVE A,TXTB3(D)
|
||
TRNE S,1
|
||
AOS A
|
||
PUSHJ P,(B)
|
||
JRST XBD2
|