mirror of
https://github.com/PDP-10/its.git
synced 2026-02-17 05:07:20 +00:00
OCM chess.
This commit is contained in:
committed by
Eric Swenson
parent
289754fb69
commit
c6ae98e915
6541
src/chprog/ccheop.484
Executable file
6541
src/chprog/ccheop.484
Executable file
File diff suppressed because it is too large
Load Diff
395
src/chprog/chnet.29
Executable file
395
src/chprog/chnet.29
Executable file
@@ -0,0 +1,395 @@
|
||||
;CHAOSNET ROUTINES, BASICALLY FROM MC:MOON;NNETWK >
|
||||
.INSRT SYSTEM; CHSDEF >
|
||||
|
||||
DEFINE SYSCAL NAME,ARGS
|
||||
.CALL [SETZ ? SIXBIT /NAME/ ? ARGS ((SETZ))]
|
||||
TERMIN
|
||||
|
||||
;CHESS PACKET TYPES
|
||||
PKTPOS==1 ;SEND OVER POSITION
|
||||
PKTRQR==2 ;REQUEST RESULT
|
||||
PKTRES==3 ;RETURNNED RESULTS
|
||||
PKTBKS==4 ;CLOSE RING AND START BACKGROUND
|
||||
|
||||
;FORMATING OF PACKET FOR TRANSFERING A CHESS POSITION:
|
||||
$CXPKT==242000,,%CPKDT ;PACKET TYPE
|
||||
$CXBFM==042000,,%CPKDT ;CHEOPS BUFFER MEMORY LOCN
|
||||
$CXPRI==242000,,%CPKDT+1 ;PRIORITY OPTION
|
||||
$CXMOD==042000,,%CPKDT+1 ;MODES (WD2 OF CHEOPS ARG BLOCK)
|
||||
$CXSTD==242000,,%CPKDT+2 ;SETD (WD3)
|
||||
$CXALP==042000,,%CPKDT+2 ;ALPHA (WD4)
|
||||
$CXBET==242000,,%CPKDT+3 ;BETA (WD5)
|
||||
$CXFLG==042000,,%CPKDT+3 ;FLAGWORD (WD6)
|
||||
$CXCHN==242000,,%CPKDT+4 ;CHAIN WORD (WD7)
|
||||
$CXPOS==$CXCHN ;FIRST DATA WORD OF POSITION. NOTE IDPB THIS..
|
||||
%CXPKL==<10.*2>+<33.*2> ;MAX BYTE LENGTH OF MESSAGE. THIS IS HOW LONG POSITION PACKETS
|
||||
; ACTUALLY ARE
|
||||
;FORMATTING FOR CHEOPS RESULT PACKET
|
||||
$CRPKT==242000,,%CPKDT ;PACKET TYPE, SAME AS ABOVE
|
||||
$CRBFM==042000,,%CPKDT ;BUFFER ADR, SAME AS ABOVE
|
||||
$CRSTD==242000,,%CPKDT+1 ;SETD FROM WD3 OF PARAM BLOCK
|
||||
$CRPAD==042000,,%CPKDT+1 ;PADDING TO MAKE FOLLOWING ALIGN ON PDP10 WORD BOUNDARIES.
|
||||
;MUST ALIGN ON WORD BOUNDARY
|
||||
$CRSTA==242000,,%CPKDT+2 ;WD16 STATA (LOW ORDER)
|
||||
$CRSTB==042000,,%CPKDT+2 ;WD17 STATB (HIGH ORDER)
|
||||
$CRVAL==242000,,%CPKDT+3 ;WD20 VALUE
|
||||
$CRIVL==042000,,%CPKDT+3 ;WD21 INITIAL VALUE
|
||||
$CRPV1==%CPKDT+4 ;WD22,23 PV1
|
||||
$CRPV2==%CPKDT+5 ;WD24,25 PV2
|
||||
$CRPV3==%CPKDT+6 ;WD26,27 PV3
|
||||
$CRPH1==%CPKDT+7 ;WD30,31 PV1 WITH HIM TO MOVE
|
||||
$CRPH2==%CPKDT+10 ;WD32,33 PV2 "
|
||||
$CRPH3==%CPKDT+11 ;WD34,35 PV3 "
|
||||
$CRHVL==242000,,%CPKDT+12 ;VALUE WITH HIM TO MOVE
|
||||
|
||||
;FORMATTING FOR CLOSE RING AND START BACKGROUND PACKET
|
||||
$CCPKT==242000,,%CPKDT ;PACKET TYPE, SAME AS ABOVE
|
||||
$CCBFM==042000,,%CPKDT ;BUFFER ADR, HEAD OF RING
|
||||
$CCBF1==242000,,%CPKDT+1 ;BUFFER ADR OF BLOCK TO RING TO HEAD BUFFER
|
||||
|
||||
;PV WITH OTHER SIDE TO MOVE
|
||||
|
||||
;CHAOS NETWORK CONNECT ROUTINE
|
||||
;
|
||||
;Call:
|
||||
; MOVEI B,host ;host number to connect to
|
||||
; MOVEI C,contact name ;an ASCIZ string
|
||||
; MOVEI D,window size
|
||||
; PUSHJ P,CHACON
|
||||
; lossage ;you may call ANALYZE to get an error message.
|
||||
; ;If $$ERRHAN is nonzero, we call ANALYZE for you.
|
||||
;
|
||||
;Clobbers only T and TT.
|
||||
;
|
||||
|
||||
.VECTOR PKTBUF(%CPMXW) ;Buffer used by Open, Close, and Analyze
|
||||
|
||||
CHACON: MOVEI TT,%CORFC
|
||||
SETZM PKTBUF
|
||||
MOVE T,[PKTBUF,,PKTBUF+1]
|
||||
BLT T,PKTBUF+%CPMXW-1 ;For extra luck, clear the packet buffer
|
||||
DPB B,[$CPKDA+PKTBUF] ;Destination host
|
||||
DPB TT,[$CPKOP+PKTBUF]
|
||||
PUSHJ P,CHSTNG ;Store string from C
|
||||
SYSCAL CHAOSO,[MOVEI CHNETI ? MOVEI CHNETO] ;Assign Chaos index
|
||||
JRST CHACNL
|
||||
SYSCAL PKTIOT,[MOVEI CHNETO ? MOVEI PKTBUF] ;Send RFC or LSN
|
||||
.LOSE 1000
|
||||
MOVEI TT,30.*30. ;30-second timeout
|
||||
SKIPE DEBUG
|
||||
MOVSI TT,177777 ;Or infinite, in debug mode
|
||||
LDB T,[$CPKOP+PKTBUF]
|
||||
CAIE T,%COLSN ;Get the boring state
|
||||
SKIPA T,[%CSRFS]
|
||||
MOVEI T,%CSLSN
|
||||
SYSCAL NETBLK,[MOVEI CHNETO ? T ? TT ? MOVEM TT] ;Await completion of connection
|
||||
JRST CHACNL
|
||||
CAIE TT,%CSOPN
|
||||
JRST CHACNL
|
||||
JRST POPJ1 ;CHACON done
|
||||
|
||||
CHACNL: ;CHACON lost
|
||||
MOVEI A,CHNETI
|
||||
PUSHJ P,ANALYZE
|
||||
JFCL ;SKIPS SOMETIMES
|
||||
.CLOSE CHNETI,
|
||||
POPJ P,
|
||||
|
||||
;Send CLOSE packet, then close connection
|
||||
;Call: MOVEI C,message ;asciz string
|
||||
; PUSHJ P,CHACLS
|
||||
; lossage
|
||||
|
||||
CHACLS: MOVEI T,%COCLS
|
||||
DPB T,[$CPKOP+PKTBUF]
|
||||
PUSHJ P,CHSTNG
|
||||
SYSCAL PKTIOT,[MOVEI CHNETO ? MOVEI PKTBUF]
|
||||
SKIPA
|
||||
AOS (P)
|
||||
.CLOSE CHNETI,
|
||||
.CLOSE CHNETO,
|
||||
JRST POPJ1
|
||||
|
||||
CHSDTO: MOVEI T,%CODAT ;FINISH FORMATING AND SEND DATA PACKET
|
||||
DPB T,[$CPKOP+PKTBUF] ;-NOTE--BYTE LENGTH SHOULD ALREADY BE IN [$CPKNB+PKTBUF]
|
||||
SYSCAL PKTIOT,[MOVEI CHNETO ? MOVEI PKTBUF]
|
||||
.VALUE
|
||||
POPJ P,
|
||||
|
||||
|
||||
;Store string from C into PKTBUF. Bash T, TT
|
||||
CHSTNG: PUSH P,B
|
||||
PUSH P,C
|
||||
MOVE B,[440800,,PKTBUF+%CPKDT]
|
||||
MOVEI TT,0
|
||||
HRLI C,440700
|
||||
CHSTG1: ILDB T,C
|
||||
JUMPE T,CHSTG2
|
||||
IDPB T,B
|
||||
CAIGE TT,%CPMXC-1
|
||||
AOJA TT,CHSTG1
|
||||
CHSTG2: DPB TT,[$CPKNB+PKTBUF]
|
||||
POP P,C
|
||||
POP P,B
|
||||
POPJ P,
|
||||
|
||||
|
||||
; Network error analysis.
|
||||
|
||||
;Call: MOVEI A,pin ;channel number that is losing
|
||||
; PUSHJ P,ANALYZE
|
||||
; .VALUE ;always skip-returns
|
||||
;
|
||||
;Clobbers only T and TT. Uses the PUTCHR routine to type out its messages.
|
||||
|
||||
.VECTOR WHYINT(4) ;Cruft returned from WHYINT
|
||||
|
||||
ANALYZE:
|
||||
AOS (P)
|
||||
PUSH P,B
|
||||
PUSH P,C
|
||||
ANALN1: SYSCAL WHYINT,[A ? MOVEM T ;Get device type
|
||||
MOVEM WHYINT ? MOVEM WHYINT+1 ? MOVEM WHYINT+2 ? MOVEM WHYINT+3 ]
|
||||
MOVEI T,0 ;Channel not open, probably
|
||||
CAIN T,%WYCHA
|
||||
JRST ANLCHA ;Chaos net channel open, further info available
|
||||
SYSCAL USRVAR,[MOVEI %JSELF ? MOVEI .RIOS(A) ? MOVEM T] ;Get I/O status wd for channel
|
||||
.LOSE 1000
|
||||
LDB TT,[220600,,T] ;only the open-loss code is available
|
||||
CAIE TT,%ENAPP ;Other end of pipeline gone, or
|
||||
CAIN TT,%ENSDR ;No such directory
|
||||
JRST [ JSP TT,SPEAK ;means destination host dead
|
||||
ASCIZ\Destination Host dead.\ ]
|
||||
CAIN TT,%EFLDV ;Device full (this one applies to both Arpanet & Chaos net)
|
||||
JRST [ JSP TT,SPEAK
|
||||
ASCIZ \All sockets in use.\ ]
|
||||
CAIN TT,%ENRDV ;Device not ready
|
||||
JRST [ JSP TT,SPEAK
|
||||
ASCIZ \Network down.\ ]
|
||||
CAIN TT,%ESCO ;Self-contradictory open
|
||||
JRST [ JSP TT,SPEAK
|
||||
ASCIZ \Connection cannot be opened because of inconsistent byte sizes.\ ]
|
||||
.CALL [ SETZ ;Some other error - get ITS error message
|
||||
'IOPUSH
|
||||
SETZ A ]
|
||||
.LOSE 1000
|
||||
.CALL [ SETZ
|
||||
SIXBIT/OPEN/
|
||||
MOVEI (A) ;here we rely on .UAI=0
|
||||
['ERR,,]
|
||||
MOVEI 3
|
||||
SETZ T ]
|
||||
.LOSE 1400
|
||||
MOVEI TT,[ASCIZ\? Internal error - \]
|
||||
PUSHJ P,ZTYPE
|
||||
ANAL0: .CALL [ SETZ ;copy error message to output device
|
||||
'IOT,,
|
||||
MOVEI (A)
|
||||
SETZM T ]
|
||||
.LOSE 1000
|
||||
CAIGE T,40
|
||||
JRST ANALYX
|
||||
PUSHJ P,PUTCHR
|
||||
JRST ANAL0
|
||||
|
||||
ANALYX: .CALL [ SETZ
|
||||
SIXBIT/IOPOP/
|
||||
SETZI (A) ]
|
||||
.LOSE 1000
|
||||
ANALX: MOVEI TT,[ASCIZ /
|
||||
/]
|
||||
PUSHJ P,ZTYPE
|
||||
POP P,C
|
||||
POP P,B
|
||||
POPJ P,
|
||||
|
||||
ANALT: MOVEI TT,[ASCIZ /Attempt to open connection timed out./]
|
||||
SPEAK: PUSHJ P,ZTYPE ;send message from TT
|
||||
JRST ANALX ; and return
|
||||
|
||||
;Analyze on chaos channel, still open
|
||||
|
||||
ANLCHA: MOVE TT,WHYINT ;Connection state
|
||||
CAIE TT,%CSLOS
|
||||
CAIN TT,%CSCLS
|
||||
JRST ANLCH1
|
||||
CAIE TT,%CSINC
|
||||
JRST ANLCH0 ;Still open
|
||||
JSP TT,SPEAK
|
||||
ASCIZ /Connection broken -- foreign host not communicating./
|
||||
|
||||
ANLCH0: PUSH P,CHSTTB(TT)
|
||||
MOVEI TT,[ASCIZ/Timed-out while connection /]
|
||||
PUSHJ P,ZTYPE
|
||||
POP P,TT
|
||||
JRST SPEAK
|
||||
|
||||
CHSTTB: [ASCIZ/closed/]
|
||||
[ASCIZ/listening/]
|
||||
[ASCIZ/has received RFC/]
|
||||
[ASCIZ/has sent RFC/]
|
||||
[ASCIZ/open/]
|
||||
[ASCIZ/lost/]
|
||||
[ASCIZ/broken/]
|
||||
|
||||
ANLCH1: PUSH P,CHSTTB(TT)
|
||||
MOVEI TT,[ASCIZ/Connection /]
|
||||
PUSHJ P,ZTYPE
|
||||
POP P,TT
|
||||
PUSHJ P,ZTYPE
|
||||
MOVEI TT,[ASCIZ/ -- /]
|
||||
PUSHJ P,ZTYPE
|
||||
HLRZ TT,WHYINT+1 ;get number of input packets
|
||||
ANLCH2: SOJL TT,ANALX ;scan input looking for CLS, LOS
|
||||
HLRZ T,WHYINT+3 ;Pick up input channel number
|
||||
SYSCAL PKTIOT,[T ? MOVEI PKTBUF]
|
||||
.LOSE 1000
|
||||
LDB T,[$CPKOP+PKTBUF]
|
||||
CAIE T,%COCLS
|
||||
CAIN T,%COLOS
|
||||
SKIPA B,[440800,,PKTBUF+%CPKDT]
|
||||
JRST ANLCH2
|
||||
LDB C,[$CPKNB+PKTBUF]
|
||||
ANLCH3: SOJL C,ANALX
|
||||
ILDB T,B
|
||||
PUSHJ P,PUTCHR
|
||||
JRST ANLCH3
|
||||
|
||||
|
||||
ZTYPE: PUSH P,B
|
||||
PUSH P,A
|
||||
MOVEI B,TYO
|
||||
SOUT (TT)
|
||||
POP P,A
|
||||
POP P,B
|
||||
POPJ P,
|
||||
|
||||
PUTCHR: PUSH P,A
|
||||
MOVE A,T
|
||||
PUSHJ P,TYO
|
||||
POP P,A
|
||||
POPJ P,
|
||||
|
||||
DEBUG: 0 ;NON-ZERO -> INIFINITE TIMEOUT ON RFC
|
||||
|
||||
|
||||
NSTRT: MOVEI C,CBABL ;PRIORITY BLOCK, WANT 16 BIT WORD ADR
|
||||
MOVEI T,CHXTB
|
||||
MOVEI D,1 ;USE PRIORITY POINTER
|
||||
CXTPO1: PUSHJ P,CXNPOS
|
||||
MOVEI ZR,%CXPKL
|
||||
DPB ZR,[$CPKNB+PKTBUF] ;SET # BYTES TO SOMETHING BIG ENUF
|
||||
PUSHJ P,CHSDTO
|
||||
POPJ P,
|
||||
|
||||
CXTPOS: MOVEI D,2 ;ADD TO BACKGROUND
|
||||
JRST CXTPO1
|
||||
|
||||
CXNPOS: MOVEI ZR,PKTPOS ;FOLLOWING ROUTINE SEMI-COMPATABLE WITH CXBPOS
|
||||
DPB ZR,[$CXPKT+PKTBUF] ;CHEOPS PACKET TYPE
|
||||
MOVE ZR,C
|
||||
LSH ZR,1 ;LISPM ADDRESS 1 UNIBUS LOCN PER ADR, NOT TWO
|
||||
DPB ZR,[$CXBFM+PKTBUF] ;CHEOPS BUFFER ADR
|
||||
DPB D,[$CXPRI+PKTBUF] ;PRIORITY OPTION
|
||||
MOVE TT,[$CXPOS+PKTBUF]
|
||||
MOVE B,[-NPC,,1]
|
||||
CXPK1: SKIPN A,PIECEL(B)
|
||||
JRST CXPK2
|
||||
SKIPGE D,CHEOPC(B)
|
||||
JRST [ LDB ZR,[PTID,,PIECE(B)]
|
||||
CAIE ZR,PID
|
||||
TRO D,40 ;THIS P PROMOTED
|
||||
JRST .+1]
|
||||
MOVE ZR,CHEOSQ(A)
|
||||
DPB D,[101000,,ZR]
|
||||
IDPB ZR,TT
|
||||
CXPK2: AOBJN B,CXPK1
|
||||
MOVEI ZR,0
|
||||
IDPB ZR,TT ;TERMINATE LIST
|
||||
MOVE ZR,-1(T) ;BITS AND MODES WD
|
||||
DPB ZR,[$CXMOD+PKTBUF]
|
||||
MOVE ZR,-5(T) ;DEPTH
|
||||
DPB ZR,[$CXSTD+PKTBUF]
|
||||
MOVE ZR,-4(T) ;INITIAL ALPHA
|
||||
DPB ZR,[$CXALP+PKTBUF]
|
||||
MOVE ZR,-3(T) ;INITIAL BETA
|
||||
DPB ZR,[$CXBET+PKTBUF]
|
||||
MOVE ZR,-2(T) ;INITIAL FLAGWORD
|
||||
DPB ZR,[$CXFLG+PKTBUF]
|
||||
MOVE ZR,-6(T) ;CHAIN WORD
|
||||
DPB ZR,[$CXCHN+PKTBUF]
|
||||
POPJ P,
|
||||
|
||||
CXBFNT: MOVE C,CBBIP ;CLOSE RING, AND START BACKGROUND SEARCH
|
||||
LSH C,1
|
||||
MOVE T,CBBBP
|
||||
SUBI T,40
|
||||
LSH T,1
|
||||
MOVEI ZR,PKTBKS
|
||||
DPB ZR,[$CCPKT+PKTBUF]
|
||||
DPB C,[$CCBFM+PKTBUF]
|
||||
DPB T,[$CCBF1+PKTBUF]
|
||||
MOVEI ZR,3*2
|
||||
DPB ZR,[$CPKNB+PKTBUF] ;DATA BYTES IN PACKET
|
||||
PUSHJ P,CHSDTO
|
||||
POPJ P,
|
||||
|
||||
;REQUEST RESULTS FROM CHEOPS
|
||||
NGTV: MOVEI C,CBABL
|
||||
CXGVN: MOVEI ZR,PKTRQR
|
||||
DPB ZR,[$CXPKT+PKTBUF]
|
||||
MOVE ZR,C
|
||||
LSH ZR,1
|
||||
DPB ZR,[$CXBFM+PKTBUF]
|
||||
MOVEI ZR,2*2
|
||||
DPB ZR,[$CPKNB+PKTBUF] ;PACKET DATA LENGTH IN BYTES
|
||||
PUSHJ P,CHSDTO ;SEND REQUEST FOR RESULTS.
|
||||
SYSCAL PKTIOT,[MOVEI CHNETI ? MOVEI PKTBUF]
|
||||
;FOLLOWING SEMI-COMPATABLE WITH HCHGVR
|
||||
LDB T,[$CPKOP+PKTBUF]
|
||||
CAIE T,%CODAT
|
||||
.VALUE ;NOT DATA PACKET
|
||||
LDB T,[$CXPKT+PKTBUF]
|
||||
CAIE T,PKTRES
|
||||
.VALUE ;NOT RESULT PACKET
|
||||
LDB J,[$CRSTD+PKTBUF]
|
||||
MOVEM J,HCHSTD
|
||||
MOVEM J,CHXSTD
|
||||
MOVE J,$CRPV1+PKTBUF
|
||||
SOSL HCHSTD
|
||||
TLNN J,777774
|
||||
JRST [ CLEARM CHXPV1
|
||||
CLEARM CHXPV2
|
||||
CLEARM CHXPV3
|
||||
JRST NTGV1]
|
||||
PUSHJ P,HCHMMV
|
||||
MOVEM R,CHXPV1
|
||||
MOVE J,$CRPV2+PKTBUF
|
||||
SOSL HCHSTD
|
||||
TLNN J,777774
|
||||
JRST [ CLEARM CHXPV2
|
||||
CLEARM CHXPV3
|
||||
JRST NTGV1]
|
||||
PUSHJ P,HCHMMV
|
||||
MOVEM R,CHXPV2
|
||||
MOVE J,$CRPV3+PKTBUF
|
||||
SOSL HCHSTD
|
||||
TLNN J,777774
|
||||
JRST [ CLEARM CHXPV3
|
||||
JRST NTGV1]
|
||||
PUSHJ P,HCHMMV
|
||||
MOVEM R,CHXPV3
|
||||
NTGV1: LDB R,[$CRIVL+PKTBUF]
|
||||
TRNE R,100000
|
||||
ORCMI R,77777
|
||||
MOVEM R,CHXIMB
|
||||
LDB R,[$CRSTA+PKTBUF]
|
||||
LDB J,[$CRSTB+PKTBUF]
|
||||
LSH J,20
|
||||
IOR J,R
|
||||
MOVEM J,CHXSTA
|
||||
LDB R,[$CRVAL+PKTBUF]
|
||||
TRNE R,100000
|
||||
ORCMI R,77777
|
||||
MOVEM R,CHXVAL
|
||||
POPJ P,
|
||||
8093
src/chprog/ocaux.224
Executable file
8093
src/chprog/ocaux.224
Executable file
File diff suppressed because it is too large
Load Diff
821
src/chprog/ocdagb.31
Executable file
821
src/chprog/ocdagb.31
Executable file
@@ -0,0 +1,821 @@
|
||||
; TV CHESSBOARD, INTENDED TO BE .INSRT'ED
|
||||
IFN TS-DECTS,[
|
||||
|
||||
;VARIABLES WITH PREFIX Z ARE FOR FONT 1 (SMALL BOARD) MODE
|
||||
|
||||
TVBBAS==370*2000 ;BASE OF VIDEO BUFFER
|
||||
NWSCNL==22 ;# WDS / SCAN LINE
|
||||
TVSQW==50. ;# BITS SQUARE IS WIDE FONT 0
|
||||
ZTVSQW==30. ; FONT 1
|
||||
TVBBW==TVSQW*8 ;# BITS BASIC BOARD WIDE
|
||||
ZTVBBW==ZTVSQW*8
|
||||
TVBDRW==3 ;# BITS BOARDERS WIDE
|
||||
NWBEDG==<TVBBW+2*TVBDRW>/32. ;# FULL WORDS IN BOTTOM BORDER
|
||||
ZNWBEDG==<ZTVBBW+2*TVBDRW>/32.
|
||||
NBBEDG==<TVBBW+2*TVBDRW>-NWBEDG*32. ;# EXTRA BITS IN BOTTOM BORDER
|
||||
ZNBBEDG==<ZTVBBW+2*TVBDRW>-ZNWBEDG*32.
|
||||
BLDGP==<4_12.>+NBBEDG*100,,NWSCNL-NWBEDG-1 ;BP TO LEFT EDGE OF BOTTOM BORDER
|
||||
ZBLDGP==<4_12.>+ZNBBEDG*100,,NWSCNL-ZNWBEDG-1
|
||||
TVLBTS==1100-TVBBW-2*TVBDRW ;BITS TO LEFT OF BOARD
|
||||
ZTVLBTS==1100-ZTVBBW-2*TVBDRW
|
||||
TVLWDS==TVLBTS/32. ;# FULL WORDS TO LEFT OF BORDER
|
||||
ZTVLWDS==ZTVLBTS/32.
|
||||
TLEBTS==TVLBTS-TVLWDS*32. ;# EXTRA BITS TO LEFT OF BORDER
|
||||
ZTLEBTS==ZTVLBTS-ZTVLWDS*32.
|
||||
IFL TLEBTS-TVBDRW,.ERR SPIT ACROSS PDP-10 WORD BOUNDARY
|
||||
IFL ZTLEBTS-TVBDRW,.ERR SMALL FONT LEFT EDGE SPLIT ACROSS PDP-10 WORD BOUNDARY
|
||||
LEDGP==<<44-TLEBTS-TVBDRW>_12.>+300,,TVLWDS+NWSCNL*TVBDRW
|
||||
;BYTE POINTER FOR LEFT EDGE
|
||||
|
||||
ZLEDGP==<<44-ZTLEBTS-TVBDRW>_12.>+300,,ZTVLWDS+NWSCNL*TVBDRW
|
||||
|
||||
TVCTAB: MOVE A,61C(B) ; VACANT WHITE SQ
|
||||
MOVE A,153C(B) ; WP ON W SQ
|
||||
MOVE A,151C(B) ; WN ON W SQ
|
||||
MOVE A,147C(B) ; WB ON W SQ
|
||||
MOVE A,145C(B) ; WR ON W SQ
|
||||
MOVE A,143C(B) ; WQ ON W SQ
|
||||
MOVE A,141C(B) ; WK ON W SQ
|
||||
MOVE A,113C(B) ; BP ON W SQ
|
||||
MOVE A,111C(B) ; BN ON W SQ
|
||||
MOVE A,107C(B) ; BB ON W SQ
|
||||
MOVE A,105C(B) ; BR ON W SQ
|
||||
MOVE A,103C(B) ; BQ ON W SQ
|
||||
MOVE A,101C(B) ; BK ON W SQ
|
||||
JFCL [0] ; VACANT BLACK SQ
|
||||
MOVE A,152C(B) ; WP ON B SQ
|
||||
MOVE A,150C(B) ; WN ON B SQ
|
||||
MOVE A,146C(B) ; WB ON B SQ
|
||||
MOVE A,144C(B) ; WR ON B SQ
|
||||
MOVE A,142C(B) ; WQ ON B SQ
|
||||
MOVE A,140C(B) ; WK ON B SQ
|
||||
MOVE A,112C(B) ; BP ON B SQ
|
||||
MOVE A,110C(B) ; BN ON B SQ
|
||||
MOVE A,106C(B) ; BB ON B SQ
|
||||
MOVE A,104C(B) ; BR ON B SQ
|
||||
MOVE A,102C(B) ; BQ ON B SQ
|
||||
MOVE A,100C(B) ; BK ON B SQ
|
||||
|
||||
DSQ: MOVE TT,BOARD(A) ; DISPLAY SQ WHOSE NUMBER IS IN RIGHT HALF OF A
|
||||
DSQC: JUMPLE TT,DSQ2 ;DISPLAY CONTENTS IN TT ON SQUARE IN A
|
||||
HRRZ ZR,TT ;SAVE A COPY
|
||||
LDB TT,[PTID,,(TT)]
|
||||
ADDI TT,1
|
||||
SKIPL @ZR
|
||||
ADDI TT,7-1
|
||||
; CAIGE TT,PIECE+20
|
||||
; SKIPA TT,[1]
|
||||
; MOVEI TT,7
|
||||
; ADD TT,@BOARD(A)
|
||||
DSQ2: SKIPE BFLIP
|
||||
SETCMI A,-170(A) ; WANT INVERTED BOARD
|
||||
MOVEI A,-2*BW(A)
|
||||
IDIVI A,BW
|
||||
MOVE T,REVERS+2(A)
|
||||
SKIPE FONT
|
||||
JRST ZDSQ1 ;USE 30. HIGH FONT
|
||||
IMULI T,TVSQW*NWSCNL
|
||||
MOVE D,REVERS(B) ;FILE NUMBER (+1)
|
||||
EQVI B,(A) ;RANK NUMBER
|
||||
TRNN B,1 ? SKIPA B,TVCTAB+15(TT) ? MOVE B,TVCTAB(TT)
|
||||
HLLZM B,MRBTS2 ? MOVEI C,44 ? MOVE A,(B)
|
||||
HRLI T,-TVSQW ? JRST @DSQ3-1(D)
|
||||
DSQ3: BLOCK 10
|
||||
|
||||
DEFINE DPBSEQ A,B
|
||||
MOVEI D,A ? JSP TT,MORBTS
|
||||
IFL A-40, DPB ZR,[<44-<A>>_36+<A>_30+ZAZ2+B(T)]
|
||||
IFE A-40, LSH ZR,4 ? MOVEM ZR,ZAZ2+B(T)
|
||||
TERMIN
|
||||
|
||||
REPEAT 8,[
|
||||
$$==. ? LOC DSQ3+.RPCNT ? $$ ? LOC $$
|
||||
;ZZ==1100-403.+50.*.RPCNT
|
||||
ZZ==1100-TVBBW-TVBDRW+TVSQW*.RPCNT ;BIT ADDRESS OF LEFT EDGE OF SQUARE
|
||||
;ZZ2==760066+<ZZ-1>/40
|
||||
ZAZ2=TVBBAS+NWSCNL*TVBDRW+<ZZ-1>/40 ;WORD ADDRESS
|
||||
ZZ==ZZ/40*40+40-ZZ ;# BITS IN SQUARE IN ADDRESSED WD
|
||||
MOVEI D,ZZ ? JSP TT,MORBTS
|
||||
DPB ZR,[<400+ZZ>_30+ZAZ2(T)]
|
||||
IFLE 22-ZZ, DPBSEQ 62-ZZ,1
|
||||
IFG 22-ZZ, DPBSEQ 40,1, ? DPBSEQ 22-ZZ,2
|
||||
ADDI T,NWSCNL-1 ? AOBJN T,$$ ? POPJ P,
|
||||
]
|
||||
|
||||
MORBTS: MOVEI ZR,0 ;GET # OF BITS IN D
|
||||
CAILE D,(C) ? AOJA B,MRBTS1
|
||||
LSHC ZR,(D) ? SUBI C,(D) ? JRST (TT)
|
||||
MRBTS1: LSHC ZR,(C)
|
||||
MRBTS2: MOVE A,(B)
|
||||
SUBI D,(C) ? LSHC ZR,(D)
|
||||
SETCMI C,-45(D) ? JRST (TT)
|
||||
|
||||
TVDINI: .CALL [ SETZ
|
||||
'CNSGET
|
||||
1000,,TYOC
|
||||
2000,, ;VERTICAL SCREEN SIZE
|
||||
2000,, ;HORIZ SCREEN SIZE
|
||||
402000,,ZR ] ; TCTYP
|
||||
.VALUE
|
||||
CAIE ZR,5 ; SKIP IF TV
|
||||
JRST NO.TV
|
||||
MOVEI ZR,28.
|
||||
SKIPE FONT
|
||||
MOVEI ZR,50.
|
||||
MOVEM ZR,LINEL
|
||||
SETOM TVFLG
|
||||
MOVE A,[-10,,TVBBAS/2000]
|
||||
MOVEI B,0
|
||||
.CALL [ SETZ
|
||||
'CORBLK
|
||||
1000,,600000
|
||||
1000,,-1
|
||||
A
|
||||
1000,,-2
|
||||
SETZ B ]
|
||||
.VALUE
|
||||
POPJ P,
|
||||
|
||||
NO.TV: SETZM TVFLG ? MOVSI ZR,(POPJ P,) ? MOVEM ZR,DBRD ? MOVEM ZR,INCD
|
||||
MOVEI ZR,79. ? MOVEM ZR,LINEL
|
||||
POPJ P,
|
||||
|
||||
DBRD: CAI
|
||||
SKIPE FONT
|
||||
JRST ZDBRD
|
||||
MOVSI A,-8*TVSQW ;WRITE BORDERS
|
||||
SETO B,
|
||||
DBRD1: DPB B,[TVBBAS+LEDGP(A)]
|
||||
DPB B,[<4_12.>+<TVBDRW_6>,,TVBBAS+NWSCNL-1+NWSCNL*TVBDRW(A)]
|
||||
ADDI A,NWSCNL-1
|
||||
AOBJN A,DBRD1
|
||||
SETCMI C,17 ? MOVSI A,-14
|
||||
REPEAT 3, DPB B,[42600,,760005+22*.RPCNT(A)]
|
||||
REPEAT 3, DPB B,[42600,,776133+22*.RPCNT(A)]
|
||||
DBRD2: REPEAT 3, MOVEM C,760006+22*.RPCNT(A)
|
||||
REPEAT 3, MOVEM C,776134+22*.RPCNT(A)
|
||||
AOBJN A,DBRD2
|
||||
; MOVSI S,-12.*BW+2*BW+1-1 ;-142+25-1
|
||||
;TVBD: MOVEI A,2*BW+1(S)
|
||||
; SKIPL BOARD(A)
|
||||
; PUSHJ P,DSQ
|
||||
; AOBJN S,TVBD
|
||||
ZTVBD: MOVEI S,8*BW+2*BW-1-1 ;BLACK'S QR1
|
||||
TVBD: MOVE A,S
|
||||
SKIPL BOARD(A)
|
||||
PUSHJ P,DSQ
|
||||
CAILE S,2*BW+1
|
||||
SOJA S,TVBD
|
||||
TVBD1: MOVE ZR,[PIECEL+1,,DPCL] ;SAVE STATE SO CAN UPDATE WHAT HAS CHANGED
|
||||
BLT ZR,DPCL+37
|
||||
POPJ P,
|
||||
|
||||
CHSQS: BLOCK 100
|
||||
DPCL: BLOCK 40 ;LOCN OF PCS WHEN LAST UPDATED
|
||||
NOINCU: 0 ;-> NO INCREMENTAL UPDATE, REDIS WHOLE THING.
|
||||
|
||||
INCDU: MOVEM 16,INCDUT+16 ;INCR UPDATE OF DISPLAY, SAVING ALL ACS (P=17)
|
||||
MOVEI 16,INCDUT
|
||||
BLT 16,INCDUT+15
|
||||
PUSHJ P,INCD
|
||||
MOVSI 16,INCDUT
|
||||
BLT 16,16
|
||||
POPJ P,
|
||||
|
||||
INCDUT: BLOCK 17
|
||||
|
||||
INCD: CAI
|
||||
SKIPGE TTYOFF
|
||||
POPJ P, ;TTY OFF, SO DONT UPDATE DISPLAY EITHER
|
||||
AOSG NOINCU
|
||||
JRST DBRD ;INCR UPDATE NOT REALLY GOING TO WIN.
|
||||
MOVEI S,CHSQS-1
|
||||
MOVSI A,-40
|
||||
INCD1: MOVE ZR,PIECEL+1(A)
|
||||
CAMN ZR,DPCL(A)
|
||||
JRST INCD2 ;THAT PC IN SAME PLACE
|
||||
PUSH S,ZR ;PUSH WHERE IT IS
|
||||
PUSH S,DPCL(A) ;PUSH WHERE IT WAS
|
||||
INCD2: AOBJN A,INCD1
|
||||
PUSHJ P,INCD3 ;FLUSH THINGS THAT HAVE GONE
|
||||
SKIPE BOARD(A)
|
||||
PUSHJ P,INCD3 ;THEN PUT ON THINGS THAT HAVE COME ON
|
||||
SKIPG BOARD(A)
|
||||
JRST TVBD1
|
||||
|
||||
INCD3:; SETCMI R,-CHSQS+2(S)
|
||||
; HRLOI R,(R)
|
||||
; AOBJP R,CPOPJ1
|
||||
HRREI R,-CHSQS(S)
|
||||
JUMPL R,POPJ1
|
||||
INCD3A: SKIPLE A,CHSQS(R)
|
||||
XCT @(P)
|
||||
JRST INCD3B
|
||||
PUSHJ P,DSQ
|
||||
INCD3B: SOJGE R,INCD3A
|
||||
JRST POPJ1
|
||||
|
||||
TVCR:
|
||||
IRP A,,[^P,"H,^H,^P,"D]
|
||||
.IOT TYOC,[A] ? TERMIN
|
||||
TVCEOL:
|
||||
IRP A,,[ZR,A,B]
|
||||
PUSH P,A ? TERMIN
|
||||
.CALL [ SETZ
|
||||
SIXBIT /RCPOS/
|
||||
1000,,TYOC
|
||||
402000,,A ]
|
||||
.VALUE
|
||||
MUL A,[22*14/2,,]
|
||||
ADD A,[-14,,TVBBAS]
|
||||
SETZ B,
|
||||
HRRM A,TVCR2
|
||||
TVCR1: HRLI B,-5
|
||||
SKIPE FONT
|
||||
HRLI B,-9
|
||||
TVCR2: SETZB (B)
|
||||
AOBJN B,.-1
|
||||
DPB [321200,,@TVCR2]
|
||||
ADDI B,22-9
|
||||
SKIPN FONT
|
||||
ADDI B,4
|
||||
AOBJN A,TVCR1
|
||||
IRP A,,[B,A,ZR]
|
||||
POP P,A ? TERMIN
|
||||
POPJ P,
|
||||
61C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 600300140140 ? 060030014006 ? 006003001400
|
||||
600300300140 ? 060030014014 ? 006003001400 ? 600200300140 ? 060030010014 ? 006003001400
|
||||
600600300140 ? 060030030014 ? 006003001401 ? 400600300140 ? 060060030014 ? 006003003001
|
||||
400600300140 ? 140060030014 ? 006006003001 ? 400600300300 ? 140060030014 ? 004006003001
|
||||
400600200300 ? 140060030014 ? 014006003001 ? 400600600300 ? 140060030030 ? 014006003001
|
||||
401400600300 ? 140060060030 ? 014006003003 ? 001400600300 ? 140140060030 ? 014006006003
|
||||
001400600300 ? 100140060030 ? 014004006003 ? 001400600300 ? 300140060030 ? 014014006003
|
||||
001400600600 ? 300140060030 ? 030014006003 ? 001401400600 ? 300140060060 ? 030014006003
|
||||
003001400600 ? 300140140060 ? 030014006002 ? 003001400600 ? 300100140060 ? 030014006006
|
||||
003001400600 ? 300300140060 ? 030014014006 ? 003001400600 ? 600300140060 ? 030030014006
|
||||
003001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
101C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600000140060 ? 060030000006 ? 003003001401 ? 700300140140 ? 060022014006 ? 006003000440
|
||||
600300300140 ? 011000014014 ? 006007637000 ? 600200300100 ? 020030010014 ? 002000401400
|
||||
600600076370 ? 060030030000 ? 044000001401 ? 400701101600 ? 060060077622 ? 377003003007
|
||||
017476034140 ? 140300071600 ? 142006014000 ? 360001400300 ? 600003000014 ? 004010000060
|
||||
000100200600 ? 001400003014 ? 030000030000 ? 030600600000 ? 600000630010 ? 000014000004
|
||||
400200360001 ? 700100044004 ? 600062002003 ? 140304001060 ? 140141014140 ? 060602006020
|
||||
201001004040 ? 100604020020 ? 103004004140 ? 601406040300 ? 101004020101 ? 014003030100
|
||||
406060600620 ? 202010101030 ? 030777777777 ? 761401407777 ? 777777060060 ? 140000000063
|
||||
003003000000 ? 001440140060 ? 601403030002 ? 001414030060 ? 600100030000 ? 000014006004
|
||||
600000000300 ? 300317777777 ? 776014014377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
103C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 600300140140 ? 060030014006 ? 006003001400
|
||||
600300300000 ? 060030000014 ? 000003001400 ? 000200000000 ? 000000010000 ? 000000000000
|
||||
600700000000 ? 007030013000 ? 000000320400 ? 330000000015 ? 400003201400 ? 140260002024
|
||||
030003005000 ? 140500300140 ? 120006012007 ? 007002400300 ? 240120120050 ? 004005402402
|
||||
403200200110 ? 050050044014 ? 003201201201 ? 300600024024 ? 024024030000 ? 500500500501
|
||||
401012012012 ? 012020060260 ? 260640640003 ? 004404411011 ? 000140150150 ? 260260006001
|
||||
201205005000 ? 100024027720 ? 120004000543 ? 777706400300 ? 011360007510 ? 014000236000
|
||||
036200600007 ? 777777774030 ? 020177777777 ? 701401403000 ? 000006020060 ? 060000000140
|
||||
003001400000 ? 003000140030 ? 301406060002 ? 000606030141 ? 400100014000 ? 000030006000
|
||||
300000000600 ? 300007777777 ? 774014000177 ? 777777700600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
105C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060000000000 ? 003003000000 ? 000000140140 ? 000000000006 ? 006000000000
|
||||
000300300000 ? 000000004014 ? 000760770370 ? 000200010410 ? 204200010000 ? 217607704000
|
||||
600404000000 ? 100030030100 ? 000002001401 ? 402000000040 ? 060060040000 ? 001003003001
|
||||
000000020140 ? 140037777777 ? 406006000006 ? 003000300300 ? 000140060004 ? 004000006000
|
||||
600000200200 ? 140014000014 ? 014006000140 ? 000600600140 ? 003000030030 ? 006000030001
|
||||
401400140000 ? 600060060006 ? 000006003003 ? 000140000140 ? 140140006000 ? 001406006000
|
||||
140000030100 ? 100006000000 ? 300004000140 ? 000006000300 ? 006000000060 ? 014000140000
|
||||
001400600406 ? 000000014030 ? 030140000000 ? 300401406000 ? 000003000060 ? 140000000060
|
||||
003002000000 ? 000400140077 ? 777777770002 ? 001000000000 ? 200100020000 ? 000004006000
|
||||
400000000100 ? 300017777777 ? 776014000377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
107C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014000 ? 003001401400
|
||||
600000140060 ? 060030000006 ? 003003001400 ? 000300140140 ? 060014000006 ? 006003000740
|
||||
000300300140 ? 031400014014 ? 006001414000 ? 600200300060 ? 140030010014 ? 003001401400
|
||||
600600140014 ? 020030030006 ? 000600001401 ? 400100030000 ? 060060006001 ? 400003003000
|
||||
100060000140 ? 140002003014 ? 006006000140 ? 041700300300 ? 102001163014 ? 004006040036
|
||||
020600200301 ? 000000410014 ? 014030000030 ? 000600600200 ? 000400030030 ? 004000010001
|
||||
401400100300 ? 200060060002 ? 006004003003 ? 000060770300 ? 140140040417 ? 604006006003
|
||||
010060100300 ? 100140201402 ? 014004006006 ? 030140600300 ? 300040002010 ? 014014001000
|
||||
040000600600 ? 030003000030 ? 030000200040 ? 001401400006 ? 003000060060 ? 000040040003
|
||||
003000001403 ? 000140140000 ? 010040000002 ? 000000303000 ? 000100000002 ? 040000006000
|
||||
000077000000 ? 300077777777 ? 777414001777 ? 777777770200 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
111C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 000300140140 ? 060000014006 ? 006003000000
|
||||
600300300140 ? 700000014014 ? 006017400000 ? 600200300316 ? 000030010014 ? 002070001400
|
||||
600600040340 ? 060030030003 ? 001401001401 ? 400140014000 ? 060060006000 ? 140003003000
|
||||
306001400140 ? 140014100014 ? 006006000600 ? 000100300300 ? 030000003004 ? 004000400000
|
||||
030000200030 ? 000000300014 ? 001400000002 ? 000600060000 ? 000060030001 ? 000160000401
|
||||
400060016600 ? 014060001000 ? 606000101002 ? 060070140003 ? 000141417003 ? 000020006017
|
||||
600140000400 ? 100160006000 ? 014004000000 ? 300000100300 ? 000014000002 ? 014000001600
|
||||
000060600000 ? 060000001410 ? 020007000000 ? 030001400300 ? 000000600060 ? 014000000014
|
||||
003001600000 ? 000300140060 ? 000000006002 ? 003000000000 ? 140100140000 ? 000003006003
|
||||
000000000060 ? 300077777777 ? 777414001777 ? 777777770200 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
113C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 600300140140 ? 060030014006 ? 006003001400
|
||||
600300300140 ? 060030014014 ? 006000000400 ? 600200300000 ? 000030010014 ? 000000001400
|
||||
600600001400 ? 060030030000 ? 176003001401 ? 400016070040 ? 060060000600 ? 300003003001
|
||||
010002000140 ? 140060600060 ? 006006003010 ? 000400300300 ? 140600014014 ? 004006014000
|
||||
300600200300 ? 100004030014 ? 014003000301 ? 400600600020 ? 004020030030 ? 000600300001
|
||||
401400007034 ? 000060060020 ? 077600003003 ? 001401004000 ? 140140060020 ? 100006006003
|
||||
001403000300 ? 100140030060 ? 014004006000 ? 400400600300 ? 300010010030 ? 014014000600
|
||||
300400600600 ? 010002000030 ? 030000200040 ? 001401400004 ? 001000060060 ? 000700034001
|
||||
003000070000 ? 160000140007 ? 000000700002 ? 000700000003 ? 400100030000 ? 000014006000
|
||||
600000000300 ? 300017777777 ? 776014010377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
141C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014000 ? 003001401400
|
||||
600000140060 ? 060030000006 ? 003003001400 ? 000300140140 ? 060014000006 ? 006003000300
|
||||
000300300140 ? 006000014014 ? 006000140000 ? 200200300077 ? 740000010014 ? 001777000000
|
||||
600600001400 ? 000030030000 ? 030000001401 ? 400700601600 ? 020060077614 ? 377000003007
|
||||
777337774000 ? 140377777777 ? 740006017777 ? 777777400300 ? 777774777774 ? 004017777717
|
||||
777700200777 ? 776377777014 ? 037777747777 ? 770200777777 ? 177777600017 ? 777763777774
|
||||
000377417776 ? 077700007770 ? 177701776002 ? 177403776017 ? 740141760037 ? 700176006037
|
||||
400776003740 ? 100770017740 ? 077004007600 ? 176001740300 ? 176003740077 ? 014003740077
|
||||
001760600037 ? 401760077010 ? 020777777777 ? 760001407777 ? 777777000060 ? 140000000060
|
||||
003003000000 ? 001400140060 ? 601403030002 ? 001414030060 ? 600100030000 ? 000014006000
|
||||
600000000300 ? 300017777777 ? 776014010377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
143C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 600300140140 ? 060030014006 ? 006003001400
|
||||
600300300000 ? 060030000014 ? 000003001400 ? 000200000000 ? 000000010000 ? 000000000000
|
||||
600700000000 ? 007030017000 ? 000000360400 ? 370000000017 ? 400003601400 ? 140360002074
|
||||
030003007400 ? 140700300140 ? 160006016007 ? 007003400300 ? 340160160070 ? 004007403403
|
||||
403600200170 ? 070070074014 ? 003601601601 ? 700600034034 ? 034034030000 ? 700700700701
|
||||
401016016016 ? 016020060360 ? 360740740003 ? 007407417017 ? 000140170170 ? 360360006001
|
||||
601607007000 ? 100034037760 ? 160004000743 ? 777707400300 ? 017360007570 ? 014000376000
|
||||
037600600007 ? 777777774030 ? 020177777777 ? 701401403777 ? 777776020060 ? 077777777740
|
||||
003001777777 ? 777000140037 ? 476371760002 ? 000771747637 ? 400100017777 ? 777770006000
|
||||
377777777600 ? 300007777777 ? 774014000177 ? 777777700600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
145C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003000000 ? 000000140140 ? 000000000006 ? 006000000000
|
||||
000300300000 ? 000000004014 ? 000760770370 ? 000200017417 ? 607600010000 ? 377777774000
|
||||
600407777777 ? 700030030177 ? 777776001401 ? 403777777740 ? 060060077777 ? 777003003001
|
||||
777777760140 ? 140037777777 ? 402006000007 ? 777000000300 ? 000177760000 ? 004000007777
|
||||
600000200200 ? 177774000014 ? 014007777740 ? 000600600177 ? 777000030030 ? 007777770001
|
||||
401400177777 ? 600060060007 ? 777776003003 ? 000177777740 ? 040140007777 ? 777400006000
|
||||
177777770000 ? 100007777777 ? 700004000177 ? 777776000300 ? 007777777760 ? 014000177777
|
||||
777400600407 ? 777777774030 ? 030177777777 ? 701401407777 ? 777777020060 ? 177777777760
|
||||
003003000000 ? 001400140060 ? 000000030002 ? 001400000000 ? 600100037777 ? 777774006000
|
||||
777777777700 ? 300017777777 ? 776014000377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
147C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014000 ? 003001401400
|
||||
600000140060 ? 060030000006 ? 003003001400 ? 000300140140 ? 060014000006 ? 006003000740
|
||||
000300300140 ? 037400014014 ? 006001774000 ? 600200300077 ? 740030010014 ? 003777401400
|
||||
600600177774 ? 020030030007 ? 777600001401 ? 400177770000 ? 060060007777 ? 400003003000
|
||||
177760000140 ? 140003777014 ? 006006000177 ? 741700300300 ? 103777177014 ? 004006077777
|
||||
760600200301 ? 777777410014 ? 014037777770 ? 000600600377 ? 777400030030 ? 007777770001
|
||||
401400177477 ? 600060060003 ? 771774003003 ? 000077007700 ? 140140040760 ? 174006006003
|
||||
017717700300 ? 100140376376 ? 014004006007 ? 747740600300 ? 300077776010 ? 014014001777
|
||||
740000600600 ? 037777000030 ? 030000377740 ? 001401400007 ? 777000060060 ? 000077740003
|
||||
003000001777 ? 000140140000 ? 017740000002 ? 000000377000 ? 000100000003 ? 740000006000
|
||||
000077000000 ? 300077777777 ? 777414001777 ? 777777770200 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
151C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600300140060 ? 060030014006 ? 003003001400 ? 000300140140 ? 060000014006 ? 006003000000
|
||||
600300300140 ? 700010014014 ? 006017400000 ? 600200300376 ? 000030010014 ? 003770001400
|
||||
600600077740 ? 060030030003 ? 777401001401 ? 400177774000 ? 060060007777 ? 740003003000
|
||||
363777400140 ? 140017577774 ? 006006000777 ? 777700300300 ? 037777777004 ? 004000777777
|
||||
770000200037 ? 777777700014 ? 001777777776 ? 000600077777 ? 777760030001 ? 777777777401
|
||||
400077776777 ? 774060001777 ? 607777701002 ? 073770177777 ? 000141777003 ? 777760006017
|
||||
600177777400 ? 100160007777 ? 774004000000 ? 377777700300 ? 000017777776 ? 014000001777
|
||||
777760600000 ? 077777777410 ? 020007777777 ? 770001400377 ? 777777600060 ? 017777777774
|
||||
003001777777 ? 777700140077 ? 777777776002 ? 003777777777 ? 740100140000 ? 000003006003
|
||||
000000000060 ? 300077777777 ? 777414001777 ? 777777770200 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
153C:
|
||||
600300140060 ? 030010014006 ? 003001400400 ? 600300140060 ? 030030014006 ? 003001401400
|
||||
600700140060 ? 060030030006 ? 003003001401 ? 400300140140 ? 060060014006 ? 006003003000
|
||||
600300300140 ? 140030014014 ? 006006000400 ? 600200300000 ? 000030010014 ? 000000001400
|
||||
600600001400 ? 060030030000 ? 176003001401 ? 400017770040 ? 060060000777 ? 700003003000
|
||||
017776000140 ? 140040777760 ? 006006003017 ? 777400300300 ? 140777774014 ? 004006017777
|
||||
700600200300 ? 177774030014 ? 014003777701 ? 400600600037 ? 774020030030 ? 000777700001
|
||||
401400007774 ? 000060060000 ? 077600003003 ? 001001774000 ? 140140060037 ? 700006006003
|
||||
001777000300 ? 100140037760 ? 014004006000 ? 777400600300 ? 300017770030 ? 014014000777
|
||||
700400600600 ? 017776000030 ? 030000377740 ? 001401400007 ? 777000060060 ? 000777774001
|
||||
003000077777 ? 760000140007 ? 777777700002 ? 000760000017 ? 400100036000 ? 000074006000
|
||||
777777777700 ? 300017777777 ? 776014010377 ? 777777740600 ? 600000000000 ? 030030000000
|
||||
000001401400 ? 600300140060 ? 060030014006 ? 003000000000
|
||||
|
||||
100C:
|
||||
REPEAT 8, 0
|
||||
000000000001 ? 700000000000 ? 000022000000 ? 000000000440
|
||||
000000000000 ? 011000000000 ? 000007637000 ? 000000000100 ? 020000000000 ? 002000400000
|
||||
000000076370 ? 000000000000 ? 044000000000 ? 000701101600 ? 000000077622 ? 377000000007
|
||||
017476034000 ? 000300071600 ? 140000014000 ? 360001400000 ? 600003000014 ? 000010000060
|
||||
000100000600 ? 001400003000 ? 030000030000 ? 030000600000 ? 600000600010 ? 000014000004
|
||||
000200360001 ? 700100004004 ? 600062002000 ? 140304001060 ? 140001014140 ? 060602000020
|
||||
201001004040 ? 000604020020 ? 103000004140 ? 601406040000 ? 101004020101 ? 000003030100
|
||||
406060000020 ? 202010101000 ? 000777777777 ? 760000007777 ? 777777000000 ? 140000000060
|
||||
000003000000 ? 001400000060 ? 601403030000 ? 001414030060 ? 600000030000 ? 000014000000
|
||||
600000000300 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
102C:
|
||||
REPEAT 22, 0
|
||||
000700000000 ? 007000013000 ? 000000320000 ? 330000000015 ? 400003201400 ? 140260000024
|
||||
030003005000 ? 000500300140 ? 120000012007 ? 007002400000 ? 240120120050 ? 000005402402
|
||||
403200000110 ? 050050044000 ? 003201201201 ? 300000024024 ? 024024000000 ? 500500500500
|
||||
000012012012 ? 012000000260 ? 260640640000 ? 004404411011 ? 000000150150 ? 260260000001
|
||||
201205005000 ? 000024027720 ? 120000000543 ? 777706400000 ? 011360007510 ? 000000236000
|
||||
036200000007 ? 777777774000 ? 000177777777 ? 700000003000 ? 000006000000 ? 060000000140
|
||||
000001400000 ? 003000000030 ? 301406060000 ? 000606030141 ? 400000014000 ? 000030000000
|
||||
300000000600 ? 000007777777 ? 774000000177 ? 777777700000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
104C:
|
||||
REPEAT 16, 0
|
||||
000760770370 ? 000000010410 ? 204200000000 ? 217607704000
|
||||
000004000000 ? 100000000100 ? 000002000000 ? 002000000040 ? 000000040000 ? 001000000001
|
||||
000000020000 ? 000037777777 ? 400000000006 ? 003000000000 ? 000140060000 ? 000000006000
|
||||
600000000000 ? 140014000000 ? 000006000140 ? 000000000140 ? 003000000000 ? 006000030000
|
||||
000000140000 ? 600000000006 ? 000006000000 ? 000140000140 ? 000000006000 ? 001400000000
|
||||
140000030000 ? 000006000000 ? 300000000140 ? 000006000000 ? 006000000060 ? 000000140000
|
||||
001400000006 ? 000000014000 ? 000140000000 ? 300000006000 ? 000003000000 ? 140000000060
|
||||
000002000000 ? 000400000077 ? 777777770000 ? 001000000000 ? 200000020000 ? 000004000000
|
||||
400000000100 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
106C:
|
||||
REPEAT 12, 0
|
||||
000014000000 ? 000000000740
|
||||
000000000000 ? 031400000000 ? 000001414000 ? 000000000060 ? 140000000000 ? 003001400000
|
||||
000000140014 ? 000000000006 ? 000600000000 ? 000100030000 ? 000000006001 ? 400000000000
|
||||
100060000000 ? 000002003014 ? 000000000140 ? 041700000000 ? 002001163000 ? 000000040036
|
||||
020000000001 ? 000000400000 ? 000030000030 ? 000000000200 ? 000400000000 ? 004000010000
|
||||
000000100300 ? 200000000002 ? 006004000000 ? 000060770300 ? 000000000417 ? 604000000000
|
||||
010060100000 ? 000000201402 ? 000000000006 ? 030140000000 ? 000040002000 ? 000000001000
|
||||
040000000000 ? 030003000000 ? 000000200040 ? 000000000006 ? 003000000000 ? 000040040000
|
||||
000000001403 ? 000000000000 ? 010040000000 ? 000000303000 ? 000000000002 ? 040000000000
|
||||
000077000000 ? 000077777777 ? 777400001777 ? 777777770000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
110C:
|
||||
REPEAT 15, 0
|
||||
700000000000 ? 000017400000 ? 000000000316 ? 000000000000 ? 002070000000
|
||||
000000040340 ? 000000000003 ? 001400000000 ? 000140014000 ? 000000006000 ? 140000000000
|
||||
306001400000 ? 000014100014 ? 000000000600 ? 000100000000 ? 030000003000 ? 000000400000
|
||||
030000000030 ? 000000300000 ? 001400000002 ? 000000060000 ? 000060000001 ? 000160000400
|
||||
000060016600 ? 014000001000 ? 606000100000 ? 060070140003 ? 000001417003 ? 000020000017
|
||||
600140000400 ? 000160006000 ? 014000000000 ? 300000100000 ? 000014000002 ? 000000001600
|
||||
000060000000 ? 060000001400 ? 000007000000 ? 030000000300 ? 000000600000 ? 014000000014
|
||||
000001600000 ? 000300000060 ? 000000006000 ? 003000000000 ? 140000140000 ? 000003000003
|
||||
000000000060 ? 000077777777 ? 777400001777 ? 777777770000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
112C:
|
||||
REPEAT 22, 0
|
||||
000000001400 ? 000000000000 ? 176000000000 ? 000016070000 ? 000000000600 ? 300000000000
|
||||
010002000000 ? 000000600060 ? 000000000010 ? 000400000000 ? 000600014000 ? 000000014000
|
||||
300000000000 ? 100004000000 ? 000003000300 ? 000000000020 ? 004000000000 ? 000600300000
|
||||
000000007034 ? 000000000000 ? 077600000000 ? 000001004000 ? 000000000020 ? 100000000000
|
||||
001403000000 ? 000000030060 ? 000000000000 ? 400400000000 ? 000010010000 ? 000000000600
|
||||
300000000000 ? 010002000000 ? 000000200040 ? 000000000004 ? 001000000000 ? 000700034000
|
||||
000000070000 ? 160000000007 ? 000000700000 ? 000700000003 ? 400000030000 ? 000014000000
|
||||
600000000300 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
140C:
|
||||
REPEAT 12, 0
|
||||
000014000000 ? 000000000300
|
||||
000000000000 ? 006000000000 ? 000000140000 ? 000000000077 ? 740000000000 ? 001777000000
|
||||
000000001400 ? 000000000000 ? 030000000000 ? 000700601600 ? 000000077614 ? 377000000007
|
||||
777337774000 ? 000377777777 ? 740000017777 ? 777777400000 ? 777774777774 ? 000017777717
|
||||
777700000777 ? 776377777000 ? 037777747777 ? 770000777777 ? 177777600017 ? 777763777774
|
||||
000377417776 ? 077700007770 ? 177701776000 ? 177403776017 ? 740001760037 ? 700176000037
|
||||
400776003740 ? 000770017740 ? 077000007600 ? 176001740000 ? 176003740077 ? 000003740077
|
||||
001760000037 ? 401760077000 ? 000777777777 ? 760000007777 ? 777777000000 ? 177777777760
|
||||
000003777777 ? 777400000077 ? 176374770000 ? 001763747717 ? 600000037777 ? 777774000000
|
||||
777777777700 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
142C:
|
||||
REPEAT 22, 0
|
||||
000700000000 ? 007000017000 ? 000000360000 ? 370000000017 ? 400003601400 ? 140360000074
|
||||
030003007400 ? 000700300140 ? 160000016007 ? 007003400000 ? 340160160070 ? 000007403403
|
||||
403600000170 ? 070070074000 ? 003601601601 ? 700000034034 ? 034034000000 ? 700700700700
|
||||
000016016016 ? 016000000360 ? 360740740000 ? 007407417017 ? 000000170170 ? 360360000001
|
||||
601607007000 ? 000034037760 ? 160000000743 ? 777707400000 ? 017360007570 ? 000000376000
|
||||
037600000007 ? 777777774000 ? 000177777777 ? 700000003777 ? 777776000000 ? 077777777740
|
||||
000001777777 ? 777000000037 ? 476371760000 ? 000771747637 ? 400000017777 ? 777770000000
|
||||
377777777600 ? 000007777777 ? 774000000177 ? 777777700000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
144C:
|
||||
REPEAT 16, 0
|
||||
000760770370 ? 000000017417 ? 607600000000 ? 377777774000
|
||||
000007777777 ? 700000000177 ? 777776000000 ? 003777777740 ? 000000077777 ? 777000000001
|
||||
777777760000 ? 000037777777 ? 400000000007 ? 777000000000 ? 000177760000 ? 000000007777
|
||||
600000000000 ? 177774000000 ? 000007777740 ? 000000000177 ? 777000000000 ? 007777770000
|
||||
000000177777 ? 600000000007 ? 777776000000 ? 000177777740 ? 000000007777 ? 777400000000
|
||||
177777770000 ? 000007777777 ? 700000000177 ? 777776000000 ? 007777777760 ? 000000177777
|
||||
777400000007 ? 777777774000 ? 000177777777 ? 700000007777 ? 777777000000 ? 177777777760
|
||||
000003000000 ? 001400000060 ? 000000030000 ? 001400000000 ? 600000037777 ? 777774000000
|
||||
777777777700 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
146C:
|
||||
REPEAT 12, 0
|
||||
000014000000 ? 000000000740
|
||||
000000000000 ? 037400000000 ? 000001774000 ? 000000000077 ? 740000000000 ? 003777400000
|
||||
000000177774 ? 000000000007 ? 777600000000 ? 000177770000 ? 000000007777 ? 400000000000
|
||||
177760000000 ? 000003777014 ? 000000000177 ? 741700000000 ? 003777177000 ? 000000077777
|
||||
760000000001 ? 777777400000 ? 000037777770 ? 000000000377 ? 777400000000 ? 007777770000
|
||||
000000177477 ? 600000000003 ? 771774000000 ? 000077007700 ? 000000000760 ? 174000000000
|
||||
017717700000 ? 000000376376 ? 000000000007 ? 747740000000 ? 000077776000 ? 000000001777
|
||||
740000000000 ? 037777000000 ? 000000377740 ? 000000000007 ? 777000000000 ? 000077740000
|
||||
000000001777 ? 000000000000 ? 017740000000 ? 000000377000 ? 000000000003 ? 740000000000
|
||||
000077000000 ? 000077777777 ? 777400001777 ? 777777770000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
150C:
|
||||
REPEAT 15, 0
|
||||
700000000000 ? 000017400000 ? 000000000376 ? 000000000000 ? 003770000000
|
||||
000000077740 ? 000000000003 ? 777400000000 ? 000177774000 ? 000000007777 ? 740000000000
|
||||
363777400000 ? 000017577774 ? 000000000777 ? 777700000000 ? 037777777000 ? 000000777777
|
||||
770000000037 ? 777777700000 ? 001777777776 ? 000000077777 ? 777760000001 ? 777777777400
|
||||
000077776777 ? 774000001777 ? 607777700000 ? 073770177777 ? 000001777003 ? 777760000017
|
||||
600177777400 ? 000160007777 ? 774000000000 ? 377777700000 ? 000017777776 ? 000000001777
|
||||
777760000000 ? 077777777400 ? 000007777777 ? 770000000377 ? 777777600000 ? 017777777774
|
||||
000001777777 ? 777700000077 ? 777777776000 ? 003777777777 ? 740000140000 ? 000003000003
|
||||
000000000060 ? 000077777777 ? 777400001777 ? 777777770000
|
||||
; PLUS 6 ZEROES TELESCOPED INTO NEXT CHAR
|
||||
|
||||
152C:
|
||||
REPEAT 22, 0
|
||||
000000001400 ? 000000000000 ? 176000000000 ? 000017770000 ? 000000000777 ? 700000000000
|
||||
017776000000 ? 000000777760 ? 000000000017 ? 777400000000 ? 000777774000 ? 000000017777
|
||||
700000000000 ? 177774000000 ? 000003777700 ? 000000000037 ? 774000000000 ? 000777700000
|
||||
000000007774 ? 000000000000 ? 077600000000 ? 000001774000 ? 000000000037 ? 700000000000
|
||||
001777000000 ? 000000037760 ? 000000000000 ? 777400000000 ? 000017770000 ? 000000000777
|
||||
700000000000 ? 017776000000 ? 000000377740 ? 000000000007 ? 777000000000 ? 000777774000
|
||||
000000077777 ? 760000000007 ? 777777700000 ? 000760000017 ? 400000036000 ? 000074000000
|
||||
777777777700 ? 000017777777 ? 776000000377 ? 777777740000
|
||||
REPEAT 6, 0
|
||||
|
||||
|
||||
ZTVCTB: MOVE A,Z61C(B) ; VACANT WHITE SQ ... THESE LABELS ARE SWAPPED WHITE FOR
|
||||
MOVE A,Z153C(B) ; WP ON W SQ BLACK AS USED BY OCM
|
||||
MOVE A,Z151C(B) ; WN ON W SQ
|
||||
MOVE A,Z147C(B) ; WB ON W SQ
|
||||
MOVE A,Z145C(B) ; WR ON W SQ
|
||||
MOVE A,Z143C(B) ; WQ ON W SQ
|
||||
MOVE A,Z141C(B) ; WK ON W SQ
|
||||
MOVE A,Z113C(B) ; BP ON W SQ
|
||||
MOVE A,Z111C(B) ; BN ON W SQ
|
||||
MOVE A,Z107C(B) ; BB ON W SQ
|
||||
MOVE A,Z105C(B) ; BR ON W SQ
|
||||
MOVE A,Z103C(B) ; BQ ON W SQ
|
||||
MOVE A,Z101C(B) ; BK ON W SQ
|
||||
MOVEI A,0 ; VACANT BLACK SQ
|
||||
MOVE A,Z152C(B) ; WP ON B SQ
|
||||
MOVE A,Z150C(B) ; WN ON B SQ
|
||||
MOVE A,Z146C(B) ; WB ON B SQ
|
||||
MOVE A,Z144C(B) ; WR ON B SQ
|
||||
MOVE A,Z142C(B) ; WQ ON B SQ
|
||||
MOVE A,Z140C(B) ; WK ON B SQ
|
||||
MOVE A,Z112C(B) ; BP ON B SQ
|
||||
MOVE A,Z110C(B) ; BN ON B SQ
|
||||
MOVE A,Z106C(B) ; BB ON B SQ
|
||||
MOVE A,Z104C(B) ; BR ON B SQ
|
||||
MOVE A,Z102C(B) ; BQ ON B SQ
|
||||
MOVE A,Z100C(B) ; BK ON B SQ
|
||||
|
||||
ZDSQ1: IMULI T,ZTVSQW*NWSCNL
|
||||
MOVE D,REVERS(B)
|
||||
EQVI B,(A)
|
||||
TRNN B,1
|
||||
ADDI TT,15
|
||||
MOVSI B,-ZTVSQW
|
||||
JRST @ZDSQD-1(D)
|
||||
|
||||
ZDSQD: REPEAT 8,CONC ZDQS,\.RPCNT
|
||||
|
||||
REPEAT 8,[
|
||||
CONC ZDQS,\.RPCNT,:
|
||||
ZLBTBA== 1100-ZTVBBW-TVBDRW+ZTVSQW*.RPCNT ;BIT ADDRESS OF LEFT EDGE OF SQUARE
|
||||
ZLBTWA== TVBBAS+NWSCNL*TVBDRW+ZLBTBA/40 ;WORD ADDRESS
|
||||
ZLBN== 40-ZLBTBA+<ZLBTBA/40*40> ;# ACTIVE BITS IN ADDRESSED WD
|
||||
ZLBS== 40-ZLBN ;# INACTIVE BITS AT LEFT OF ADR WD
|
||||
|
||||
IFGE ZLBN-ZTVSQW,[ ;WILL FIT IN ONE WHACK
|
||||
CONC ZTT,\.RPCNT,:
|
||||
XCT ZTVCTB(TT) ; MOVE A,CHTAB(B)
|
||||
DPB A,[<4+<32.-ZTVSQW>-ZLBS>_12.+ZTVSQW*100,,ZLBTWA(T)]
|
||||
ADDI T,NWSCNL
|
||||
AOBJN B, CONC ZTT,\.RPCNT,
|
||||
POPJ P,
|
||||
]
|
||||
.ELSE [
|
||||
ZLWBTS==ZTVSQW-ZLBN ;NUMBER OF ACTIVE BITS IN LOW WORD
|
||||
CONC ZTT,\.RPCNT,:
|
||||
XCT ZTVCTB(TT) ;MOVE A,CHTAB(B)
|
||||
DPB A,[<44-ZLWBTS>_12.+<ZLWBTS*100>,,ZLBTWA+1(T)] ;DBP LOW BITS FIRST
|
||||
;(THESE ARE LEFT ADJUSTED)
|
||||
LSH A,-ZLWBTS ;FLUSH THEM
|
||||
DPB A,[4_12.+<<ZTVSQW-ZLWBTS>*100>,,ZLBTWA(T)] ;THESE ARE RIGHT ADJUSTED
|
||||
ADDI T,NWSCNL
|
||||
AOBJN B,CONC ZTT,\.RPCNT,
|
||||
POPJ P,
|
||||
]
|
||||
]
|
||||
|
||||
ZDBRD: MOVSI A,-8*ZTVSQW ;WRITE BORDERS
|
||||
SETO B,
|
||||
ZDBRD1: DPB B,[TVBBAS+ZLEDGP(A)]
|
||||
DPB B,[<4_12.>+<TVBDRW_6>,,TVBBAS+NWSCNL-1+NWSCNL*TVBDRW(A)]
|
||||
ADDI A,NWSCNL-1
|
||||
AOBJN A,ZDBRD1
|
||||
SETCMI C,17
|
||||
MOVSI A,-ZNWBEDG
|
||||
REPEAT TVBDRW, DPB B,[<4_12.>+<ZNBBEDG*100>,,TVBBAS+NWSCNL*.RPCNT+ZTVLWDS(A)]
|
||||
REPEAT TVBDRW,[
|
||||
DPB B,[<4_12.>+<ZNBBEDG*100>,,TVBBAS+NWSCNL*.RPCNT+ZTVLWDS+ZTVBBW*NWSCNL+TVBDRW*NWSCNL(A)]
|
||||
]
|
||||
ZDBRD2:
|
||||
REPEAT TVBDRW, MOVEM C,TVBBAS+NWSCNL*.RPCNT+ZTVLWDS+1(A)
|
||||
REPEAT TVBDRW, MOVEM C,TVBBAS+NWSCNL*.RPCNT+ZTVLWDS+1+ZTVBBW*NWSCNL+TVBDRW*NWSCNL(A)
|
||||
AOBJN A,ZDBRD2
|
||||
JRST ZTVBD
|
||||
|
||||
|
||||
Z61C: 4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
|
||||
Z100C: 0 ? 0 ? 0 ? 340000 ? 240000 ? 1670000
|
||||
1010000 ? 1670000 ? 240000 ? 16247000 ? 61670600 ? 100340100
|
||||
200100040 ? 200100040 ? 400100020 ? 400000020 ? 416007020 ? 421010420
|
||||
221010440 ? 220420440 ? 210421040 ? 177777700 ? 100000100 ? 104102100
|
||||
104102100 ? 100000100 ? 177777700 ? 0 ? 0 ? 0
|
||||
|
||||
Z101C: 4141414141 ? 303030303 ? 606000606 ? 1414341414 ? 3030243030 ? 6061670060
|
||||
4141010141 ? 301670303 ? 600240006 ? 1416247014 ? 3061670630 ? 6100340100
|
||||
4200100041 ? 200100043 ? 400100026 ? 400000020 ? 2416007020 ? 6421010420
|
||||
4221010441 ? 220420443 ? 210421046 ? 1177777714 ? 3100000110 ? 6104102100
|
||||
4104102101 ? 100000103 ? 577777706 ? 1400000014 ? 3000000030 ? 6060606060
|
||||
|
||||
Z102C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
0 ? 0 ? 300000140 ? 340000340 ? 142004300 ? 143014300
|
||||
141430300 ? 141430300 ? 141430300 ? 141430300 ? 61430600 ? 61430600
|
||||
61350600 ? 63774600 ? 56007200 ? 77777600 ? 40000200 ? 42104200
|
||||
42104200 ? 40000200 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z103C: 4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6000606000
|
||||
4000000001 ? 3 ? 300000142 ? 340000340 ? 2142004300 ? 6143014300
|
||||
4141430301 ? 141430303 ? 141430306 ? 141430304 ? 2061430600 ? 6061430600
|
||||
4061350601 ? 63774603 ? 56007206 ? 77777614 ? 2040000210 ? 6042104200
|
||||
4042104201 ? 40000203 ? 77777606 ? 14 ? 3000000030 ? 6060606060
|
||||
|
||||
Z104C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
34343400 ? 23434400 ? 20000400 ? 20000400 ? 20000400 ? 37777400
|
||||
1010000 ? 2004000 ? 2004000 ? 4002000 ? 4002000 ? 10001000
|
||||
10001000 ? 20000400 ? 20000400 ? 40000200 ? 40000200 ? 40000200
|
||||
77777600 ? 40000200 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z105C: 4141414141 ? 303030303 ? 606060606 ? 1400000014 ? 3000000030 ? 6000000020
|
||||
4034343401 ? 23434403 ? 420000406 ? 1420000414 ? 3020000430 ? 6037777460
|
||||
4001010001 ? 202004003 ? 602004006 ? 1404002014 ? 3004002030 ? 6010001060
|
||||
4010001001 ? 20000403 ? 20000406 ? 1040000204 ? 3040000200 ? 6040000200
|
||||
4077777601 ? 40000203 ? 77777606 ? 14 ? 2000000030 ? 6060606060
|
||||
|
||||
Z106C: 0 ? 0 ? 0 ? 0 ? 100000 ? 340000
|
||||
420000 ? 1010000 ? 2010000 ? 2020000 ? 4040000 ? 4046000
|
||||
4062000 ? 4002000 ? 4002000 ? 4002000 ? 4102000 ? 4342000
|
||||
2104000 ? 2104000 ? 2004000 ? 1010000 ? 1010000 ? 420000
|
||||
420000 ? 240000 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z107C: 4141414141 ? 303030303 ? 606000606 ? 1414001414 ? 3030100030 ? 6060340060
|
||||
4140420141 ? 301010303 ? 602010006 ? 1402020014 ? 3004040030 ? 6004046060
|
||||
4104072141 ? 304002103 ? 604002006 ? 1404002014 ? 3004102030 ? 6004342060
|
||||
4142104141 ? 302104303 ? 602004006 ? 1401010014 ? 3001010030 ? 6000420060
|
||||
4000420001 ? 240003 ? 77777606 ? 0 ? 2000000000 ? 6060606060
|
||||
|
||||
Z110C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
3600000 ? 1140000 ? 1020000 ? 2010000 ? 4404000 ? 10402000
|
||||
20001000 ? 40000400 ? 100000400 ? 100600200 ? 203100200 ? 214100200
|
||||
160200100 ? 400100 ? 1000100 ? 6000040 ? 10000040 ? 60000040
|
||||
100000040 ? 200000040 ? 377777740 ? 0 ? 0 ? 0
|
||||
|
||||
Z111C: 4141414141 ? 303030303 ? 606060606 ? 1414001414 ? 3030003030 ? 6060000060
|
||||
4143600141 ? 301140303 ? 601020206 ? 1402010014 ? 3004404030 ? 6010402060
|
||||
4020001001 ? 40000403 ? 100000406 ? 100600214 ? 203100210 ? 4214100200
|
||||
4160200101 ? 400103 ? 1000106 ? 6000040 ? 2010000040 ? 6060000040
|
||||
4100000041 ? 200000043 ? 377777746 ? 0 ? 2000000000 ? 6060606060
|
||||
|
||||
Z112C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
0 ? 0 ? 340000 ? 1430000 ? 1010000 ? 2004000
|
||||
2004000 ? 2004000 ? 1010000 ? 1010000 ? 760000 ? 420000
|
||||
420000 ? 1010000 ? 1010000 ? 1010000 ? 1010000 ? 6006000
|
||||
30001400 ? 40000200 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z113C: 4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6060606060
|
||||
4140000141 ? 300000303 ? 600340606 ? 1401430014 ? 3021010030 ? 6062004060
|
||||
4142004141 ? 302004303 ? 601010206 ? 1401010014 ? 3020760030 ? 6060420060
|
||||
4140420141 ? 301010303 ? 601010206 ? 1401010014 ? 3001010030 ? 6006006000
|
||||
4030001401 ? 40000203 ? 77777606 ? 1000000014 ? 3000000030 ? 6060606060
|
||||
|
||||
Z140C: 0 ? 0 ? 0 ? 0 ? 100000 ? 100000
|
||||
760000 ? 760000 ? 100000 ? 16107000 ? 77537600 ? 177777700
|
||||
377677740 ? 377677740 ? 777677760 ? 777777760 ? 761770760 ? 760760760
|
||||
340760340 ? 340340340 ? 360340740 ? 177777700 ? 177777700 ? 173675700
|
||||
173675700 ? 177777700 ? 177777700 ? 0 ? 0 ? 0
|
||||
|
||||
Z141C: 4141414141 ? 303030303 ? 606000606 ? 1414001414 ? 3030100030 ? 6060100060
|
||||
4140760001 ? 300760003 ? 600100006 ? 1416107000 ? 3077537600 ? 6177777700
|
||||
4377677741 ? 377677743 ? 777677760 ? 777777760 ? 761770760 ? 4760760760
|
||||
4340760341 ? 340340343 ? 360340746 ? 177777700 ? 2177777700 ? 6173675700
|
||||
4173675701 ? 177777703 ? 177777706 ? 1000000014 ? 3000000030 ? 6060606060
|
||||
|
||||
Z142C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
0 ? 0 ? 300000140 ? 340000340 ? 342004340 ? 143014300
|
||||
141430300 ? 141430300 ? 141430300 ? 141430300 ? 61430600 ? 61430600
|
||||
61770600 ? 63774600 ? 76007600 ? 77777600 ? 77777600 ? 75673600
|
||||
75673600 ? 77777600 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z143C: 4141414141 ? 303030303 ? 606060606 ? 1414141414 ? 3030303030 ? 6000606000
|
||||
4000000001 ? 3 ? 300000142 ? 340000340 ? 2342004340 ? 6143014300
|
||||
4141430301 ? 141430303 ? 141430306 ? 141430304 ? 2061430600 ? 6061430600
|
||||
4061770601 ? 63774603 ? 76007606 ? 77777614 ? 2077777610 ? 6075673600
|
||||
4075673601 ? 77777603 ? 77777606 ? 14 ? 3000000030 ? 6060606060
|
||||
|
||||
Z144C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
34343400 ? 37777400 ? 37777400 ? 37777400 ? 37777400 ? 3774000
|
||||
1770000 ? 3774000 ? 3774000 ? 7776000 ? 7776000 ? 17777000
|
||||
17777000 ? 37777400 ? 37777400 ? 77777600 ? 77777600 ? 40000200
|
||||
40000200 ? 77777600 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z145C: 4141414141 ? 303030303 ? 606060606 ? 1400000014 ? 3000000030 ? 6000000020
|
||||
4034343401 ? 37777403 ? 437777406 ? 1437777414 ? 3037777430 ? 6003774000
|
||||
4001770001 ? 203774003 ? 603774006 ? 1407776014 ? 3007776030 ? 6017777000
|
||||
4017777001 ? 37777403 ? 37777406 ? 1077777614 ? 3077777610 ? 6040000200
|
||||
4040000201 ? 77777603 ? 77777606 ? 14 ? 3000000030 ? 6060606060
|
||||
|
||||
Z146C: 0 ? 0 ? 0 ? 0 ? 100000 ? 340000
|
||||
760000 ? 1770000 ? 3770000 ? 3760000 ? 7740000 ? 7706000
|
||||
7776000 ? 7776000 ? 7776000 ? 7776000 ? 7676000 ? 7436000
|
||||
3674000 ? 3674000 ? 3774000 ? 1774000 ? 1770000 ? 760000
|
||||
760000 ? 340000 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z147C: 4141414141 ? 303030303 ? 606000606 ? 1414001414 ? 3030100030 ? 6060340060
|
||||
4140760141 ? 301770303 ? 603770006 ? 1403760014 ? 3007740030 ? 6007706060
|
||||
4107776141 ? 307776103 ? 607776006 ? 1407776014 ? 3007676030 ? 6007436060
|
||||
4143674141 ? 303674303 ? 603774006 ? 1401774014 ? 3001770030 ? 6000760060
|
||||
4000760001 ? 340003 ? 77777606 ? 0 ? 2000000000 ? 6060606060
|
||||
|
||||
Z150C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
3600000 ? 1740000 ? 1760000 ? 3770000 ? 7374000 ? 17376000
|
||||
37777000 ? 77777400 ? 177777400 ? 177777600 ? 377177600 ? 374177600
|
||||
160377700 ? 777700 ? 1777700 ? 7777740 ? 17777740 ? 77777740
|
||||
177777740 ? 300000140 ? 377777740 ? 0 ? 0 ? 0
|
||||
|
||||
Z151C: 4141414141 ? 303030303 ? 606060606 ? 1414001414 ? 3030003030 ? 6060002060
|
||||
4143600141 ? 301740303 ? 601760206 ? 1403770014 ? 3007374030 ? 6017376060
|
||||
4037777001 ? 77777403 ? 177777406 ? 177777614 ? 377177610 ? 4374177600
|
||||
4160377701 ? 777703 ? 1777706 ? 7777740 ? 2017777740 ? 6077777740
|
||||
4177777741 ? 300000143 ? 377777746 ? 0 ? 2000000000 ? 6060606060
|
||||
|
||||
Z152C: 0 ? 0 ? 0 ? 0 ? 0 ? 0
|
||||
0 ? 0 ? 340000 ? 1770000 ? 1770000 ? 3774000
|
||||
3774000 ? 3774000 ? 1770000 ? 1770000 ? 760000 ? 760000
|
||||
760000 ? 1770000 ? 1770000 ? 1770000 ? 1770000 ? 7776000
|
||||
37777400 ? 60000600 ? 77777600 ? 0 ? 0 ? 0
|
||||
|
||||
Z153C: 4141414141 ? 303030303 ? 606060606 ? 1414101414 ? 3030203030 ? 6060406060
|
||||
4140000141 ? 300000303 ? 600340606 ? 1401770014 ? 3001770030 ? 6043774060
|
||||
4143774141 ? 303774303 ? 601770206 ? 1401770014 ? 3000760030 ? 6040760060
|
||||
4140760141 ? 301770303 ? 601770206 ? 1401770014 ? 3001770030 ? 6007776000
|
||||
4037777401 ? 60000603 ? 77777606 ? 1000000014 ? 3000000030 ? 6060606060
|
||||
]
|
||||
|
||||
|
||||
118
src/chprog/ocdis.21
Executable file
118
src/chprog/ocdis.21
Executable file
@@ -0,0 +1,118 @@
|
||||
IFE TS+DECTS,[
|
||||
|
||||
DIS1: 0
|
||||
IDIVI A,10.
|
||||
JSR DISC
|
||||
IDIVI A,6.
|
||||
JSR DISC
|
||||
MOVEI B,":-"0
|
||||
JSR DISC
|
||||
JRST @DIS1
|
||||
|
||||
DISC: 0
|
||||
ADDI B,"0
|
||||
DPB B,DISIP
|
||||
MOVE B,DISIP
|
||||
ADD B,[60000,,]
|
||||
SKIPGE B
|
||||
SUB B,[440000,,1]
|
||||
MOVEM B,DISIP
|
||||
JRST @DISC
|
||||
|
||||
APREX: MOVE A,CASAVE
|
||||
MOVE B,CBSAVE
|
||||
APREX1: CONO 1000+APRCHN
|
||||
JRST 12,@IAPRBRK
|
||||
|
||||
DISL2: 20156220054
|
||||
61200274040
|
||||
WNUM: 607260607260
|
||||
605660343337
|
||||
20000
|
||||
61200024040
|
||||
BNUM: 607260607260
|
||||
605660373737
|
||||
3000,,
|
||||
]
|
||||
IFN DSPLY,[
|
||||
FONT: 1 ;FONT ON TV. 0-> 50. WIDE BIG, 1-> 30. WIDE SMALL
|
||||
FFANCY: -2
|
||||
FANCY: PUSHJ P,GETNUM
|
||||
FANSET: MOVE A,FFANCY ;OLD VALUE
|
||||
MOVEM C,FFANCY
|
||||
CLEARM TOPVP
|
||||
CAILE C,2
|
||||
JRST FFANTV
|
||||
CAILE A,2
|
||||
PUSHJ P,TVBOFF ;FLUSH TV PAGES
|
||||
AOJL C,PSRET ;NO DISPLAY
|
||||
MOVEI C,11.
|
||||
MOVEM C,TOPVP
|
||||
PUSHJ P,TOS
|
||||
PUSHJ P,DISUP
|
||||
JRST PSRET
|
||||
|
||||
FFANTV: PUSHJ P,TVDINI
|
||||
PUSHJ P,DBRD
|
||||
SKIPGE TVFLG
|
||||
.CALL [ SETZ ;FLUSH ECHOING OF CR, LF, AND TAB
|
||||
SIXBIT /TTYSET/
|
||||
1000,,TYIC
|
||||
[232323232323]
|
||||
SETZ [230323032323]]
|
||||
JFCL
|
||||
POPJ P,
|
||||
|
||||
TVBOFF: CLEARM TVFLG
|
||||
.CALL [ SETZ ;ECHO CR, LF AND TAB AS NORMAL
|
||||
SIXBIT /TTYSET/
|
||||
1000,,TYIC
|
||||
[232323232323]
|
||||
SETZ [232323232323]]
|
||||
.VALUE
|
||||
TVBCLR: MOVE A,[-10,,TVBBAS/2000] ;FLUSH VIDEO BUFFER PAGES
|
||||
.CALL [ SETZ
|
||||
SIXBIT /CORBLK/
|
||||
1000,,0
|
||||
1000,,-1
|
||||
SETZ A]
|
||||
.VALUE
|
||||
POPJ P,
|
||||
|
||||
DISUP:
|
||||
IFN TS,[
|
||||
MOVE A,FFANCY
|
||||
CAILE A,2
|
||||
JRST INCD ;DO INCR UPDATE OF TV BOARD
|
||||
SKIPL TTYOFF
|
||||
SKIPL GETTY
|
||||
POPJ P, ;NO DISPLAY
|
||||
HRROI B,TYO1
|
||||
.IOT TYOC,[^P]
|
||||
.IOT TYOC,["S] ;SAVE CURSOR POSITION
|
||||
.IOT TYOC,[^P]
|
||||
.IOT TYOC,["T]
|
||||
.IOT TYOC,[^P]
|
||||
.IOT TYOC,["L]
|
||||
PUSHJ P,.DISBD
|
||||
.IOT TYOC,[^P]
|
||||
.IOT TYOC,["R] ;RESTORE CURSOR POSITION
|
||||
POPJ P,
|
||||
]
|
||||
.DISBD: SKIPLE FFANCY
|
||||
SOUT [ASCII / !/] ;3 TAB'S
|
||||
MOVE A,PLYN
|
||||
TRNE A,1
|
||||
SOUT [ASCII /BLACK!/]
|
||||
TRNN A,1
|
||||
SOUT [ASCII /WHITE!/]
|
||||
SOUT [ASCII / TO MOVE
|
||||
|
||||
!/]
|
||||
.DISB1: SKIPE FFANCY
|
||||
PUSHJ P,BDOUT
|
||||
DISUP3: POPJ P,
|
||||
|
||||
|
||||
.INSRT OCDAGB >
|
||||
]
|
||||
10617
src/chprog/ocm.470
Executable file
10617
src/chprog/ocm.470
Executable file
File diff suppressed because it is too large
Load Diff
Reference in New Issue
Block a user