mirror of
https://github.com/PDP-10/its.git
synced 2026-01-30 21:41:56 +00:00
3414 lines
46 KiB
Plaintext
3414 lines
46 KiB
Plaintext
TITLE BIG 144 710928 160139
|
||
|
||
RELOCA
|
||
|
||
6V==0 ;1 = NO PLAYER, USES ONLY T-S PROCESSOR
|
||
32K=0 ;0 = 16K
|
||
|
||
APRCHN"==4
|
||
TPCHN"==2
|
||
TPCHNA"==40
|
||
UTCCHN"==3
|
||
PCHCHN"==UTCCHN
|
||
NDIR"==3
|
||
NURBUF"==3
|
||
NUWBUF"==3
|
||
BLKSPC"==5
|
||
TTYCHN==7
|
||
|
||
A=1
|
||
TAPAC"=A
|
||
B=2
|
||
C=3
|
||
D=4
|
||
E=5
|
||
F=6
|
||
G=7
|
||
H=10
|
||
P"=11
|
||
I=12
|
||
J=13
|
||
K=14
|
||
L"=15
|
||
M=16
|
||
N=17
|
||
|
||
MEMTOP=37777
|
||
IFN 32K,TOP=40000
|
||
IFE 32K,TOP=26400
|
||
IFN 32K,FRETOP=77777
|
||
IFE 32K,FRETOP=37777
|
||
|
||
DEFINE .RD710 A
|
||
DATAI 710,A
|
||
TERMIN
|
||
;BLOCK LENGTHS
|
||
|
||
STRLL==140 ;MAX LENGTH OF INPUT STRING
|
||
SLAKLL==100
|
||
COMLL==140
|
||
PDLL==40
|
||
XPDLL==10
|
||
YPDLL==10
|
||
SYTLL==200
|
||
SYMLL==240
|
||
TITLL==40
|
||
NLINES==10
|
||
ALIVEL==30
|
||
|
||
;SYMS LH
|
||
|
||
NUMBER==21
|
||
TONUS==22
|
||
ORDFLG==23
|
||
ORDINL==24
|
||
STAR==25
|
||
CREATE==26
|
||
STRUCT==27
|
||
UNSTRU==30
|
||
PARAM==31
|
||
MINUS==32
|
||
MODIFY==33
|
||
MODALL==(MODIFY)0
|
||
MODEXC==(MODIFY)1
|
||
MODPLS==(MODIFY)2
|
||
MODAGN==(MODIFY)3
|
||
ERASER==34
|
||
GOTO==35
|
||
PLAYER==36
|
||
MULTIP==37
|
||
BRAKET==40
|
||
PUNCTU==41
|
||
PUNCCM==(PUNCTU)0
|
||
PUNCCL==(PUNCTU)1
|
||
PUNCSC==(PUNCTU)2
|
||
PUNCTO==(PUNCTU)3
|
||
PUNCFM==(PUNCTU)4
|
||
PUNCSL==(PUNCTU)5
|
||
TRANSL==42
|
||
SCRIB==43
|
||
HARMON==44
|
||
CLEF==45
|
||
|
||
;F FLAGS (RH)
|
||
|
||
IGNORF==20
|
||
RETYPF==40
|
||
NONEWF==100
|
||
MINUSF==200
|
||
PREVCF==400
|
||
NOMORF==1000
|
||
PLEASF==2000
|
||
BEGUNF==4000
|
||
|
||
.ZZ.==.
|
||
LOC 40
|
||
0
|
||
JSR UUOH
|
||
|
||
LOC .ZZ.
|
||
|
||
DEFINE NUMS N1,N2
|
||
ZZZ==.
|
||
REPEAT N2-N1+1,N1+.-ZZZ
|
||
TERMIN
|
||
|
||
JRST SETUP
|
||
|
||
SETUPX": MOVE 0,[(20)SAVLOD
|
||
BLT 0,SAVLOD+17
|
||
MOVEI A,FREE"
|
||
MOVEM A,FREP'"
|
||
MOVSI A,-MAXNP"
|
||
SETUX0: JUMPGE A,SETUX1
|
||
SETOM PRECLE"(A)
|
||
AOBJN A,SETUX0
|
||
SETUX1: SETZM NTAPES'
|
||
AOS NTAPES
|
||
SETZM TIME'
|
||
IFE 6V,[ SETZM PSDATL
|
||
MOVE 0,[PSDATL,,PSDATL+1]
|
||
BLT 0,HARCDE-1
|
||
]
|
||
|
||
SETUP": MOVE P,[(,-PDLL)PDL-1
|
||
.OPEN 2,[SIXBIT / %TTY/]
|
||
JRST 4,.-1
|
||
.OPEN 1,[SIXBIT / 4TTY/]
|
||
JRST SSSB
|
||
.RD710 B,
|
||
IDIVI B,60.
|
||
MOVE A,[(252525252525)]
|
||
MOVEM A,RAND'
|
||
FMPM A,RAND
|
||
SOJG C,.-1
|
||
MOVEI A,1
|
||
MOVE B,[(600)SYMTAB-1]
|
||
|
||
SETUP0: ILDB C,B
|
||
JUMPN C,.-1
|
||
ILDB C,B
|
||
SKIPE C
|
||
AOJA A,SETUP0
|
||
MOVEM A,NSYMS'
|
||
MOVNM A,NNSYMS'
|
||
MOVEM B,STEND'
|
||
SETZM PLAYP'
|
||
IFE 6V,[ PUSHJ P,TUNEUP
|
||
SETUP1: MOVE P,[(,-PDLL)PDL-1]
|
||
]
|
||
|
||
REALLY: MOVEI C,"^
|
||
SETZM ALTF'
|
||
SETZM BKD'
|
||
REALL1: PUSHJ P,TTYOFF
|
||
PUSHJ P,CRLF
|
||
|
||
RCS: MOVE P,[(,-PDLL)PDL-1 ;GET SET TO GOBBLE CHAR. STRING
|
||
MOVEM P,DOP
|
||
SETZM BRAKC'
|
||
MOVSI H,-STRLL
|
||
SKIPE A,ALTF
|
||
RCS2: PUSHJ P,ECHO
|
||
RCS1: PUSHJ P,TYI ;DISPATCH ON CHAR (JUST PUT IN STRING IF REG.)
|
||
CAIN A,177
|
||
JRST RBOUT
|
||
CAIN A,4
|
||
JRST REALL1
|
||
CAIN A,"/
|
||
JRST GENAM
|
||
CAIN A,"\
|
||
PUSHJ P,RCOMN
|
||
CAIE A,33
|
||
CAIN A,175
|
||
MOVEM C,ALTF
|
||
CAIN A,"[
|
||
AOS BRAKC
|
||
CAIN A,"]
|
||
SOS BRAKC
|
||
CAIE A,15
|
||
JRST RCS2
|
||
SKIPN BRAKC
|
||
JRST RCS3
|
||
PUSHJ P,CRLF
|
||
RCSH: MOVSI A,-1
|
||
MOVEM A,STRING(H)
|
||
AOBJP H,SST ;STRING TOO LONG
|
||
JRST RCS2
|
||
|
||
RCS3: SETZM STRING(H) ;GET HERE WHEN C.R. REALLY MEANS DOIT.
|
||
AOBJP H,SST
|
||
SETOM STRING(H) ;END MARKER IS -1
|
||
AOBJP H,SST
|
||
SETZM STRING(H)
|
||
JRST TCS
|
||
RBOUT: SETZM STRING(H)
|
||
RBT: SOJ H,
|
||
CAMG H,[-STRLL,,0]
|
||
JRST REALLY
|
||
SKIPN A,STRING(H)
|
||
JRST RCSH
|
||
PUSHJ P,TYO6
|
||
JRST RBT
|
||
|
||
LOSE: MOVE B,[440700,,[ASCIZ ./COMMAND STRING LOSES\.]]
|
||
PUSHJ P,DOSAY5
|
||
JRST DONE
|
||
|
||
UUOH:
|
||
0
|
||
MOVEM ACSAV
|
||
MOVE [1,,ACSAV+1]
|
||
BLT ACSAV+17
|
||
EXCH P,PSAV
|
||
PUSHJ P,CRLF
|
||
MOVE B,[440700,,[ASCIZ ./ILLEGAL UUO\.]]
|
||
PUSHJ P,DOSAY5
|
||
EXCH P,PSAV
|
||
.VALUE
|
||
UUOBLM: MOVEI A,SETUPX-1 ;MOBY BLAM
|
||
MOVEM A,UUOH
|
||
UUOSRT: AOS UUOH
|
||
UUORET: MOVE [ACSAV+1,,1]
|
||
BLT 17
|
||
MOVE ACSAV
|
||
JRST @UUOH
|
||
|
||
ACSAV: BLOCK 20
|
||
PSAV: UUOPDL
|
||
UUOPDL: BLOCK 20 ;PDL FOR UUO OPS SO AS NOT TO CLOBBER...
|
||
TCS: MOVEI F,STRING
|
||
MOVSI H,-COMLL
|
||
|
||
TCS2: SKIPN (F) ;SIXBIT SPACE IS ZERO
|
||
AOJA F,.-1
|
||
MOVE A,(F)
|
||
AOJE A,DO ;END OF COMMAND STRING
|
||
SKIPGE A
|
||
AOJA F,TCS6
|
||
|
||
TCS1: PUSHJ P,SS ;EVALUATE SYMBOL
|
||
CAIL A,60
|
||
JRST TCS3
|
||
CAIGE A,30
|
||
JRST SSSA ;CAN'T GET IT
|
||
SUB A,2BEST'
|
||
CAIGE A,10
|
||
JRST SSSA ;CAN'T GET IT HERE EITHER
|
||
TCS4: MOVE A,NBEST' ;THIS IS IT
|
||
HRL E,F
|
||
TCS7: MOVEM A,COML(H) ;MAKE LIST OF THINGS TO DO
|
||
MOVE F,SSBF'
|
||
AOBJN H,TCS2 ;GET NEXT SYMBOL
|
||
JRST SSS ;WHAT LOSSAGE??
|
||
|
||
TCS3: SUB A,2BEST
|
||
CAIGE A,6
|
||
JRST SSSA ;CAN'T GET THIS SYMBOL
|
||
MOVE A,2BEST
|
||
CAIL A,60
|
||
JRST SSSB
|
||
JRST TCS4
|
||
|
||
TCS6: MOVEM F,SSBF
|
||
SOJA A,TCS7
|
||
|
||
ECHO1: MOVEI A,40
|
||
ECHO: MOVEI B,-40(A)
|
||
JUMPL B,ECHO1
|
||
CAIL B,100
|
||
JRST ECHO1
|
||
ECHO2: MOVEM B,STRING(H)
|
||
MOVEI A,40(B)
|
||
CAIN A,"^
|
||
SETZM ALTF
|
||
AOBJN H,TYO
|
||
|
||
SST: PUSHJ P,CRLF
|
||
SSS: MOVEI A,"?
|
||
PUSHJ P,TYO
|
||
JRST REALLY
|
||
|
||
GENAM: PUSHJ P,GNAM ;CREATE A NAME BY TRIAL AND ERROR
|
||
PUSHJ P,GENAM3
|
||
JRST RCS1
|
||
|
||
GENAM3: MOVSI C,-5
|
||
GENAM2: MOVE E,STEND ;SHOVE IT INTO STRING
|
||
GENAM1: MOVE B,SLAK(C)
|
||
PUSHJ P,ECHO2
|
||
DPB B,E
|
||
IBP E
|
||
AOBJN C,GENAM1
|
||
MOVEI A,0
|
||
DPB A,E
|
||
IDPB A,E
|
||
|
||
NULSYM: SOS NNSYMS
|
||
AOS B,NSYMS ;E IS PNTR
|
||
CAIL B,SYMLL
|
||
JRST SSSB
|
||
SETZM SYMS(B)
|
||
MOVEI B,(E)
|
||
CAIL B,SYTEND-2
|
||
JRST SSSB
|
||
MOVEM E,STEND
|
||
POPJ P,
|
||
|
||
|
||
GNAM: MOVSI C,-5 ;MAKE UP A NAME
|
||
GNAM1: XCT RCHT(C)
|
||
HRREM B,SLAK(C)
|
||
AOBJN C,GNAM1
|
||
SETZM SLAK(C)
|
||
MOVEI F,SLAK
|
||
PUSHJ P,SS ;ALREADY EXISTS?
|
||
CAIL A,20
|
||
JRST GNAM ;AMOST, TRY AGAIN
|
||
POPJ P,
|
||
|
||
RCHT: PUSHJ P,RCCHAR
|
||
PUSHJ P,RVCHAR
|
||
PUSHJ P,RCCHAR
|
||
PUSHJ P,RVCHAR
|
||
PUSHJ P,RCCHAR
|
||
|
||
RVCHAR: PUSHJ P,RANDOM
|
||
IDIVI A,6
|
||
MOVE A,B
|
||
MOVE B,[440600,,RVTAB]
|
||
JRST RV1
|
||
|
||
RCCHAR: PUSHJ P,RANDOM
|
||
IDIVI A,20.
|
||
MOVE A,B
|
||
MOVE B,[440600,,RCTAB]
|
||
RV1: PUSH P,C
|
||
ILDB C,B
|
||
SOJGE A,.-1
|
||
MOVE B,C
|
||
POP P,C
|
||
POPJ P,
|
||
|
||
|
||
RVTAB: SIXBIT /AEIOUY/
|
||
RCTAB: SIXBIT /BCDFGHJKLMNPQRSTVWXYZ/
|
||
|
||
SS: CLEARM 2BEST' ;SYMBOL EVALUATOR
|
||
CLEARB G,1BEST'
|
||
MOVE E,[(600)SYMTAB-1
|
||
ILDB I,E
|
||
|
||
SS0: MOVEI B,1(F)
|
||
SETOM NCHW'
|
||
MOVE A,-1(B)
|
||
MOVE A,TYPE(A)
|
||
MOVEM A,SSOLDT'
|
||
|
||
SS01: AOS NCHW ;FIND END OF SYMBOL (SPACE)
|
||
MOVE A,(B)
|
||
MOVE A,TYPE(A)
|
||
JUMPL A,SS19
|
||
CAMN A,SSOLDT'
|
||
AOJA B,SS01
|
||
|
||
SS19: MOVEM B,SSBF ;B HAS END OF SYM
|
||
SS10: CLEARB C,D
|
||
MOVE B,F ;F HAS BEGINNING OF SYM
|
||
SS1: MOVE A,I ;A HAS CURRENT BYTE TO TEST AGAINST.
|
||
ILDB I,E
|
||
JUMPE A,SS2 ;RAN OUT
|
||
ADDI D,1 ;D HAS ITERATION COUNT
|
||
CAMN A,(B) ;CHECK CHARACTORS
|
||
ADDI C,60 ;INFINITELY SURE THIS IS CHAR
|
||
SKIPG NCHW ;CHECK NEARBY CHARS?
|
||
JUMPE I,SS12
|
||
CAMN A,-1(B)
|
||
ADDI C,37 ;SOMEWHAT PLAUSABLE HE MEANT THIS
|
||
CAMN A,1(B)
|
||
ADDI C,24 ;PLAUSABLE HE MEANT THIS
|
||
SKIPG NCHW
|
||
AOJA B,SS1
|
||
CAMN A,-2(B)
|
||
ADDI C,14 ;HE MIGHT EVEN MEAN THIS
|
||
CAMN A,2(B)
|
||
ADDI C,10 ;UNLIKELY, BUT MAYBE THIS
|
||
SS12: AOJA B,SS1
|
||
|
||
SS2: SUBI D,1 ;COMPUTE FIRST AND SECOND BEST CHOICES.
|
||
SUB D,NCHW
|
||
IMUL D,D
|
||
ADD D,NCHW
|
||
ADDI D,1
|
||
IDIV C,D
|
||
CAMG C,1BEST
|
||
JRST SS3
|
||
EXCH G,NBEST
|
||
EXCH C,1BEST
|
||
MOVEM G,N2BEST'
|
||
MOVE G,NBEST
|
||
MOVEM C,2BEST
|
||
SS20: CAME E,STEND
|
||
AOJA G,SS10
|
||
MOVE A,1BEST
|
||
POPJ P,
|
||
|
||
SS3: CAMG C,2BEST
|
||
JRST SS20
|
||
MOVEM G,N2BEST
|
||
MOVEM C,2BEST
|
||
JRST SS20
|
||
|
||
|
||
RCOMN: PUSHJ P,TTYOFF ;GET INFORMATION FROM LOSER
|
||
PUSHJ P,CRLF
|
||
MOVEI A,"\
|
||
PUSHJ P,TYO
|
||
MOVE C,[(10700)SLAK-1]
|
||
RCOMN1: PUSHJ P,TYI
|
||
CAIN A,177
|
||
JRST RCOMN2
|
||
PUSHJ P,TYO
|
||
CAME C,[(10700)SLAK+SLAKLL-1
|
||
IDPB A,C
|
||
CAIE A,"\ ;TERMINATOR
|
||
JRST RCOMN1
|
||
JRST CRLF
|
||
|
||
RCOMN2: CAMN C,[(10700)SLAK-1] ;RUBOUT
|
||
JRST RCOMN1
|
||
LDB A,C
|
||
PUSHJ P,TYO
|
||
ADD C,[7_30.]
|
||
SKIPGE C
|
||
ADD C,[-<43_30.>-1]
|
||
JRST RCOMN1
|
||
|
||
RANNO":
|
||
RANDOM: MOVE A,[(252525)252525
|
||
FMPB A,RAND
|
||
.RD710 B,
|
||
ADD A,B
|
||
POPJ P,
|
||
|
||
|
||
|
||
GCDD": JUMPE I,CPOPJ
|
||
JUMPN J,GCDD1
|
||
MOVEI I,1
|
||
POPJ P,
|
||
|
||
GCDD1: PUSH P,A
|
||
PUSH P,I
|
||
PUSH P,J
|
||
MOVE A,I
|
||
GCDD2: MOVE I,A
|
||
CAMGE I,J
|
||
EXCH I,J
|
||
MOVE A,J
|
||
IDIV I,J
|
||
JUMPN J,GCDD2
|
||
POP P,I
|
||
IDIV I,A
|
||
EXCH I,(P)
|
||
IDIV I,A
|
||
POP P,J
|
||
POP P,A
|
||
POPJ P,
|
||
DONE": PUSHJ P,TTYOFF
|
||
MOVE P,DOP'
|
||
SKIPL COML(H)
|
||
AOJA H,.-1
|
||
JRST DO1
|
||
|
||
DO: SETOM COML(H)
|
||
DO0: SETZB H,F
|
||
|
||
DO1: MOVEM P,DOP'
|
||
PUSHJ P,DOG
|
||
JRST REALLY ;SUPER-CONFUSED
|
||
CAMN D,[MODAGN]
|
||
JRST DOAG
|
||
MOVE A,[COML,,COMSL]
|
||
BLT A,COMSL+COMLL-1 ;SAVE STRING JUST IN CASE
|
||
SETZM REHASH'
|
||
CAMN D,[MODPLS] ;SET TO PLEASE MODE
|
||
JRST DOPLSE
|
||
HRRZS D
|
||
CAIN E,BRAKET
|
||
JRST DOBRAK
|
||
CAIN E,STAR
|
||
JRST DOSTAR
|
||
CAIN E,CREATE
|
||
JRST DOCREA
|
||
CAIN E,TRANSL
|
||
JRST DOTRNS
|
||
CAIN E,ERASER
|
||
JRST DOERZ
|
||
CAIN E,PARAM
|
||
JRST DOPARM
|
||
CAIN E,GOTO
|
||
XCT GOTOT(D)
|
||
CAIN E,PLAYER
|
||
XCT PLTOT(D)
|
||
CAIN E,SCRIB
|
||
XCT SCRIBT(D)
|
||
|
||
DONEXT: AOJE H,DO1
|
||
|
||
DOG: HRRE G,COML(H)
|
||
JUMPL G,CPOPJ
|
||
SKIPGE COML(H)
|
||
AOJA H,DO1A ;END OF STRING MARKER
|
||
CAML G,NSYMS
|
||
JRST SSSB ;NOT IN SYMBOL TABLE
|
||
TRNN F,RETYPF
|
||
JRST DO10
|
||
MOVEI A,40
|
||
TRON F,NONEWF
|
||
MOVEI A,"\
|
||
PUSHJ P,TYO
|
||
MOVE B,[(600)SYMTAB-1
|
||
SOJL G,DO11
|
||
ILDB A,B
|
||
JUMPE A,.-2
|
||
JRST .-2 ;LOSSAGE ??
|
||
|
||
PUSHJ P,TYO6
|
||
DO11: ILDB A,B
|
||
JUMPN A,.-2
|
||
HRRZ G,COML(H)
|
||
DO10: TRNE F,IGNORF
|
||
SOJA H,DO1
|
||
HLRZ E,SYMS(G)
|
||
MOVE D,SYMS(G)
|
||
JRST SPOPJ
|
||
|
||
DO1A: POP P,A
|
||
JRST DO1
|
||
|
||
DOAG: SETZB I,DOAGWF'
|
||
DOAG1: ADDI H,1
|
||
PUSHJ P,DOG
|
||
MOVNI E,1
|
||
DOAG3: HRRE A,COMSL(I)
|
||
JUMPL A,DOAG2
|
||
HLRZ B,SYMS(A)
|
||
JUMPN E,DOAG4
|
||
CAIE B,UNSTRU
|
||
CAIN B,STRUCT
|
||
JRST DOAG5
|
||
DOAG4:
|
||
CAME B,E
|
||
AOJA I,DOAG3
|
||
DOAG5: MOVE A,COML(H)
|
||
MOVEM A,COMSL(I)î
|
||
AOJA I,DOAG1
|
||
DOAG2: MOVE A,[COMSL,,COML] ;RESTORE STRING
|
||
BLT A,COML+COMLL-1
|
||
SETOM REHASH'
|
||
JRST DO0
|
||
|
||
DOBRAK: JUMPN D,DOBRK1
|
||
AOS BKD
|
||
PUSHJ P,NUMVAL
|
||
SKIPN A
|
||
MOVEI A,1
|
||
PUSH P,H
|
||
PUSH P,A
|
||
JRST DONEXT
|
||
|
||
DOBRK1: SOSLE A,(P)
|
||
SKIPA H,-1(P)
|
||
SOSGE BKD'
|
||
JRST DONEXT
|
||
SUB P,[(2)2
|
||
JRST DONEXT
|
||
|
||
|
||
GOTOT: JRST TUNEUP
|
||
AOJA H,DOVALU
|
||
JRST DOTITL
|
||
JRST ALLOW
|
||
AOJA H,DOTAPE
|
||
JRST WRIT
|
||
JRST DOLIST
|
||
JRST HARBLD
|
||
JRST HARAUG
|
||
JRST JRSTGO
|
||
JRST DETUNE
|
||
JRST HARSCL
|
||
JRST VOXPT
|
||
JRST VOXCD
|
||
JRST SCWAV
|
||
JRST CLEFP
|
||
JRST RELPDP
|
||
JRST PLWHOA
|
||
JRST SCLBLD
|
||
JRST PRINT
|
||
JRST SYNN
|
||
|
||
PLTOT: JRST PLGOA
|
||
JRST PSGOA
|
||
|
||
SCRIBT: JRST PLOT
|
||
|
||
DOSTAR: CAIN D,2
|
||
JRST DDTGO
|
||
TRON F,RETYPF
|
||
PUSHJ P,CRLF
|
||
CAIN D,1
|
||
TRO F,IGNORF
|
||
AOJA H,DO1
|
||
|
||
DOPLSE: TRO F,PLEASF ;HE REALLY WANTS THIS
|
||
AOJA H,DO1
|
||
|
||
RELPDP: SETZM PLAYP
|
||
.CLOSE 17,
|
||
.CLOSE 16,
|
||
AOJA H,DO1
|
||
DOCREA: MOVEI B,NUMBER
|
||
PUSHJ P,GET
|
||
MOVNI A,1
|
||
MOVEM A,J
|
||
SKIPL (C)
|
||
ADDI C,1
|
||
MOVEI B,NUMBER
|
||
PUSHJ P,GET2
|
||
MOVNI A,1
|
||
MOVEM A,DOCRN2'
|
||
MOVE K,D
|
||
DOCRE0: SETOM PLWN
|
||
SETZB G,PLWN+1
|
||
MOVE A,[(PLWN+1)PLWN+2
|
||
BLT A,PLWN+177
|
||
MOVEI B,0
|
||
PUSHJ P,GET
|
||
JRST DOCRE1
|
||
HRRZ C,(C)
|
||
DOCRE2: MOVEM C,DOTITA'
|
||
ADDI C,SYMS
|
||
SETZM (C)
|
||
HRRM C,STASH
|
||
MOVE I,FREP'
|
||
XCT DOCRET(K)
|
||
JRST DONE
|
||
|
||
DOCRE1: MOVEI B,UNSTRU
|
||
PUSHJ P,GET
|
||
JRST DOCRE3
|
||
DOCRE4: MOVE C,B
|
||
PUSH P,C
|
||
PUSHJ P,DOERS1
|
||
POP P,C
|
||
JRST DOCRE2
|
||
|
||
DOCRE3: MOVEI B,STRUCT
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
JRST DOCRE4
|
||
|
||
PUSHJ P,TTSTOU
|
||
DOCRET: PUSHJ P,CRRDOL
|
||
PUSHJ P,CRUT
|
||
PUSHJ P,CRSC
|
||
PUSHJ P,CRKY
|
||
PUSHJ P,CRRCMP
|
||
PUSHJ P,DPLU
|
||
PUSHJ P,CRRCMI
|
||
|
||
|
||
DOTRNS: MOVEI B,STRUCT
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
HRRZM A,TTOX'
|
||
ADDI A,1
|
||
HRRM A,TTGET
|
||
MOVEI K,-1
|
||
JRST DOCRE0
|
||
|
||
DOERZ: PUSHJ P,@DOERZT(D)
|
||
JRST DONE
|
||
|
||
DOERZT: DOERAS
|
||
DOMENT
|
||
|
||
DOERAS: PUSHJ P,DOERA
|
||
MOVEM A,FREP
|
||
SETZM SYMS(M)
|
||
PUSHJ P,DOERS
|
||
PUSHJ P,DOERS1
|
||
SETZM TITL
|
||
POPJ P,
|
||
|
||
DOMENT: PUSHJ P,TTYON
|
||
PUSHJ P,DOERA
|
||
JFCL
|
||
PUSHJ P,DOSAY0
|
||
PUSHJ P,DOSAY
|
||
PUSHJ P,DOSAY9
|
||
JFCL
|
||
POPJ P,
|
||
|
||
CLEFP: MOVEI B,CLEF
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
HRREM A,CLEFPA'
|
||
MOVEI B,NUMBER
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
SKIPLE A
|
||
CAILE A,MAXNP"
|
||
JRST BADATA
|
||
MOVE B,CLEFPA
|
||
MOVEM B,PRECLE"(A)-1
|
||
JRST DONE
|
||
|
||
|
||
DPLU: PUSH P,DONEW
|
||
MOVE B,[440700,,[ASCIZ ./NO EDIT ROUTINES\.]]
|
||
JRST DOSAY5
|
||
|
||
PLOT: SETZB M,N
|
||
ADDI H,1
|
||
SKIPGE A,COML(H)
|
||
JRST DONE
|
||
HLRZ B,SYMS(A)
|
||
CAIE B,STRUCT
|
||
JRST BADATA
|
||
HRRZ J,SYMS(A)
|
||
HRRZM A,PLOTLS'
|
||
PLOTLP: ADDI H,1
|
||
SKIPGE A,COML(H)
|
||
SOJA H,PLOTDO
|
||
MOVE B,SYMS(A)
|
||
CAMN B,[PUNCFM]
|
||
JRST PLOTFM
|
||
CAME B,[PUNCTO]
|
||
SOJA H,PLOTDO
|
||
PUSHJ P,NUMVAL
|
||
MOVE N,A
|
||
JRST PLOTLP
|
||
|
||
PLOTFM: PUSHJ P,NUMVAL
|
||
SKIPE A
|
||
SUBI A,1
|
||
MOVE M,A
|
||
JRST PLOTLP
|
||
|
||
PLOTDO: SETZB B,L
|
||
PLOTW: HLRZ C,TITL(B)
|
||
JUMPE C,PLOTY
|
||
CAME C,PLOTLS
|
||
AOJA B,PLOTW
|
||
HRR L,TITL(B)
|
||
PLOTY: MOVEM H,PLOTRH'
|
||
JRST .PLOT"
|
||
|
||
.PLOTR": MOVE H,PLOTRH
|
||
JRST PLOT
|
||
|
||
DOSAY0: MOVE C,M
|
||
DOSAY9: HLRZ B,SYMS(C)
|
||
JRST DOSAY1
|
||
|
||
DOSAY: PUSHJ P,GCHEK
|
||
DOSAY1: PUSHJ P,CRLF
|
||
MOVEI A,40
|
||
CAIN B,STRUCT
|
||
MOVEI A,"*
|
||
CAIN B,HARMON
|
||
MOVEI A,"#
|
||
PUSHJ P,TYO
|
||
PUSHJ P,DOSAY6
|
||
MOVEI D,0
|
||
DOSAY2: HLRZ A,TITL(D)
|
||
JUMPE A,CPOPJ
|
||
CAME A,C
|
||
AOJA D,DOSAY2
|
||
MOVEI A,40
|
||
PUSHJ P,TYO
|
||
HRR B,TITL(D)
|
||
HRLI B,700
|
||
|
||
DOSAY5": ILDB A,B
|
||
CAIN A,"\
|
||
POPJ P,
|
||
PUSHJ P,TYO
|
||
JRST DOSAY5
|
||
|
||
|
||
DOSAY6: SETZB A,E
|
||
PUSHJ P,TYO6
|
||
MOVE B,[(600)SYMTAB-1
|
||
JUMPE C,DOSAY4
|
||
|
||
DOSAY3: ILDB A,B
|
||
JUMPN A,.-1
|
||
CAIE C,1(E)
|
||
AOJA E,DOSAY3
|
||
|
||
DOSAY4: ILDB A,B
|
||
PUSHJ P,TYO6
|
||
CAIE A,40
|
||
JRST DOSAY4
|
||
POPJ P,
|
||
|
||
|
||
DDTGO: SKIPA A,[LOGOUT]
|
||
JRSTGO: PUSHJ P,NUMVOC
|
||
CAILE A,17
|
||
CAILE A,MEMTOP
|
||
JRST BADATA
|
||
PUSHJ P,UWAIT"
|
||
JRST (A)
|
||
JRST SETUP
|
||
|
||
LOGOUT: .LOGOUT
|
||
.VALUE
|
||
JRST SETUPX
|
||
|
||
SYNN: MOVEI C,COML+1(H)
|
||
MOVEI A,COML+2(H)
|
||
HRRZ B,(A)
|
||
HLRZ B,SYMS(D)
|
||
HRRZ D,(C)
|
||
HLRZ D,SYMS(D)
|
||
MOVEM B,SYMS(C)
|
||
JRST DONE
|
||
|
||
SAVLOD: BLOCK 20
|
||
|
||
ALLOW: PUSH P,H ;TEST FOR GOODNESS
|
||
PUSHJ P,ALLOWZ
|
||
POP P,H
|
||
JRST DONE
|
||
|
||
|
||
ALLOWZ: PUSHJ P,RCOMN
|
||
MOVSI C,-10.
|
||
MOVE B,[(700)SLAK-1
|
||
SETZM SLAK+7
|
||
|
||
ALLOW0: ILDB A,B
|
||
CAIE A,",
|
||
CAIN A,"\
|
||
JRST ALLOW1
|
||
SUBI A,40
|
||
JUMPL A,ALLOW0
|
||
CAIGE A,100
|
||
SKIPE TYPE(A)
|
||
JRST ALLOW0
|
||
MOVEM A,SLAK+10(C)
|
||
AOBJN C,ALLOW0
|
||
|
||
ALLOW1: MOVEM B,ALLOWB'
|
||
SETZM SLAK+10(C)
|
||
CAMG C,[(,-8.)
|
||
JRST ALLOWS
|
||
MOVNM C,ALLOWC'
|
||
PUSH P,F
|
||
MOVEI F,SLAK+10
|
||
PUSHJ P,SS
|
||
POP P,F
|
||
MOVEI B,22
|
||
TRNE F,PLEASF
|
||
MOVEI B,35
|
||
CAML A,B
|
||
JRST ALLOWN
|
||
MOVS C,ALLOWC
|
||
HRRI C,10
|
||
MOVSI H,-STRLL
|
||
PUSHJ P,GENAM2
|
||
MOVE B,ALLOWB
|
||
LDB A,B
|
||
CAIN A,",
|
||
JRST ALLOW0
|
||
JRST DONE
|
||
|
||
ALLOWS: MOVE B,[(700)[ASCII ./TOO SHORT\.]-1]
|
||
JRST DOSAY5
|
||
|
||
ALLOWN: MOVE B,[(700)[ASCII ./RESEMBLES\.]-1]
|
||
PUSHJ P,DOSAY5
|
||
MOVE C,NBEST'
|
||
JRST DOSAY6
|
||
DOPARM: PUSHJ P,NUMVAL
|
||
XCT DOPX(D)
|
||
XCT DOPY(D)
|
||
JRST DONE
|
||
|
||
DOPX: JFCL
|
||
PUSHJ P,DOPSSC
|
||
JFCL
|
||
JFCL
|
||
PUSHJ P,DOPTMP
|
||
PUSHJ P,SCRHK
|
||
PUSHJ P,DOPSDN
|
||
PUSHJ P,ARDSP
|
||
|
||
DOPY: JFCL
|
||
MOVEM A,SCRSPC
|
||
MOVEM A,SCRINT
|
||
MOVEM A,DETEMPO
|
||
IFN 6V, MOVEM A,PLTDMY'
|
||
IFE 6V, MOVEM A,PLTEMP-73+PDP6P
|
||
MOVEM A,SCRSIZ
|
||
MOVEM A,SLURDN
|
||
MOVEM A,PLOWA
|
||
|
||
ARDSIZ": 30
|
||
SCRSIZ": 60
|
||
SCRINT": 1
|
||
SLURDN": 2
|
||
PLOWS": 1
|
||
PLOWA: 0
|
||
|
||
DOPTMP: PUSH P,A
|
||
IFE 6V,[
|
||
MOVE D,A ;CHANGE TEMPO
|
||
MUL D,[(300000)]
|
||
MOVEM D,PSTEMP
|
||
SKIPL PLAYP
|
||
JRST DOPTMQ
|
||
.ACCESS 16,[76]
|
||
.IOT 16,B
|
||
SOJN B,DOPTMQ ;UNLESS PLAYING
|
||
.ACCESS 16,[77]
|
||
.IOT 16,B
|
||
SOJL B,DOPTMQ ;UNLESS REALLY PLAYING
|
||
.ACCESS 17,DOPTMT(B)
|
||
MOVE C,DOPTMU(B)
|
||
.IOT 17,C
|
||
DOPTMQ:
|
||
]
|
||
IFN 6V, JFCL
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
IFE 6V,[
|
||
DOPTMT: PLTEMP ;MI
|
||
PSTEMP ;DAC
|
||
DOPTMU: -1,,A ;MI
|
||
-1,,D ;DAC
|
||
]
|
||
DOPSSC: CAIG A,20.
|
||
CAMGE A,[-20.]
|
||
JRST BADATA
|
||
PUSH P,A
|
||
IMUL A,[14631,,463146]
|
||
MOVEM A,SCRSPA
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
SCRSPA": 0
|
||
SCRSPC: 0
|
||
|
||
|
||
GET: MOVEI C,COML+1(H) ;GET NEXT SYL OF TYPE IN B
|
||
GET2: SKIPGE (C)
|
||
POPJ P,
|
||
HRRZ A,(C)
|
||
HLRZ A,SYMS(A)
|
||
CAME A,B
|
||
AOJA C,GET2
|
||
HRRZ B,(C)
|
||
HRRZ A,SYMS(B)
|
||
JRST SPOPJ
|
||
|
||
DOPSDN: JUMPLE A,BADATA
|
||
CAIL A,5
|
||
JRST BADATA
|
||
POPJ P,
|
||
|
||
SCRHK: MOVE B,A
|
||
ASH B,-1
|
||
MOVEM B,ARDSIZ
|
||
POPJ P,
|
||
|
||
ARDSP: MOVEI B,0
|
||
SKIPN A
|
||
MOVEI B,1
|
||
CAIN A,1
|
||
MOVNI B,1
|
||
MOVEM B,PLOWS
|
||
POPJ P,
|
||
|
||
|
||
TUFLUK": MOVEI A,"/
|
||
PUSHJ P,TYO
|
||
BADATA: SKIPGE COML(H)
|
||
JRST REALLY
|
||
HLRZ F,COML(H)
|
||
SKIPA A,["/
|
||
SSSA: MOVEI A,"?
|
||
SSSA1: PUSHJ P,TYO
|
||
MOVE A,(F)
|
||
JUMPLE A,REALLY
|
||
PUSHJ P,TYO6
|
||
AOJA F,SSSA1+1
|
||
|
||
SSSB": MOVEI A,"?
|
||
PUSHJ P,TYO
|
||
HLRZ F,COML(H)
|
||
JRST SSSA1
|
||
|
||
EVENON=400000
|
||
|
||
CRRCMI: SKIPA J,[1] ;READ IN MUSIC, K=-1 MEANS TRANSLATE
|
||
CRRDOL: TDZA K,K
|
||
CRRCMP: MOVEI K,1
|
||
PUSHJ P,TTYON
|
||
JUMPLE J,BADATA
|
||
CAIL J,11
|
||
JRST BADATA
|
||
SKIPN K
|
||
PUSHJ P,CRLF
|
||
SETZM CRFLAG'"
|
||
JUMPN K,CRRCM1
|
||
CONO PTR,20
|
||
PUSHJ P,CRRBK
|
||
JRST 4,.-1
|
||
CRRCM0: SETZM CRDELY' ;GET HERE FOR ALLREADS, MODE IN J, K DEVICE
|
||
SETZM CRDELZ'
|
||
MOVEM J,CRNPT'
|
||
SOS CRNPT
|
||
MOVNS J
|
||
HRLZ M,J
|
||
MOVEI L,1
|
||
PUSHJ P,PDAT
|
||
SETZM CRRSP(M)
|
||
SETZM CRPREV(M)
|
||
AOBJN M,.-2
|
||
MOVE C,N
|
||
|
||
CRRW1: PUSHJ P,CRGNB ;GET TIME
|
||
JUMPE A,CROP2K ;IF END
|
||
JUMPE K,CRRW6
|
||
MOVE B,CRGNBA'
|
||
AOJE B,CRRW3 ;STOP SPEC
|
||
CRRW6: SUB A,[(1)]
|
||
ASH A,5
|
||
SKIPE K
|
||
ASH A,9
|
||
IDIV A,DETEMPO
|
||
EXCH A,CRDELY
|
||
ADDM A,CRDELZ
|
||
HRLZ M,J
|
||
PUSHJ P,CRGNB
|
||
|
||
CRRW2: MOVEI D,3
|
||
LSHC A,-12.
|
||
|
||
CRR1: SOJL A,CROP11 ;IF DEAD PART
|
||
CAMN A,CRPREV(M)
|
||
JRST CROP11 ;IF NO CHANGE
|
||
MOVE L,CRPREW(M)
|
||
JUMPE A,CROP12 ;IF REST
|
||
SKIPE CRPREV(M)
|
||
PUSHJ P,PDAT1A
|
||
|
||
CROP1: MOVE L,M
|
||
CAILE L,5
|
||
SUBI L,6
|
||
ASH L,7
|
||
ADD L,A
|
||
|
||
CROP10: MOVEM L,CRPREW(M)
|
||
SETOM PLWN(L)
|
||
ADD L,CRRSP(M)
|
||
TROA L,EVENON
|
||
CROP12: SETZM PLWN(L) ;SKIPPED OVER
|
||
PUSHJ P,PDAT1
|
||
MOVEM A,CRPREV(M)
|
||
|
||
CROP11: AOBJP M,CRRW1 ;IF FINISHED CHORD
|
||
MOVEI A,0
|
||
ROTC A,6
|
||
SOJG D,CRR1
|
||
PUSHJ P,CRGNB0
|
||
JRST CRRW2
|
||
|
||
CRRW3: PUSHJ P,CRGNB
|
||
MOVEI D,0
|
||
CRRW5: MOVE M,[220600,,A]
|
||
CRRW4: ILDB B,M
|
||
ASH B,11.
|
||
MOVEM B,CRRSP(D)
|
||
TLNE M,770000
|
||
AOJA D,CRRW4
|
||
CAML D,CRNPT
|
||
JRST CRRW1
|
||
PUSHJ P,CRGNB0
|
||
AOJA D,CRRW5
|
||
|
||
CROP2K: JUMPE K,CROP2
|
||
PUSHJ P,.UNRED"
|
||
CROP2": MOVEI L,0
|
||
PUSHJ P,PDAT
|
||
CROP3: HRLM I,@FREP'
|
||
EXCH I,FREP
|
||
MOVE B,CRFLAG
|
||
HRL I,CROP3T(B)+1
|
||
|
||
STASH: MOVEM I,
|
||
JUMPE G,CPOPJ
|
||
MOVE A,G
|
||
JRST DPT
|
||
|
||
CROP3T: STRUCT
|
||
UNSTRU
|
||
UNSTRU
|
||
HARMON
|
||
|
||
CRGNB0: JUMPN K,CRGNB5
|
||
CRGNB: JUMPN K,CRGNB6 ;GET NEXT BITE
|
||
CAMN N,C
|
||
PUSHJ P,CRRBK
|
||
JRST CRGNB1
|
||
JRST .-2
|
||
CRGNB1: ILDB A,N
|
||
POPJ P,
|
||
|
||
CRGNB6: PUSHJ P,CRCUR ;NOT PTR, GET WORD
|
||
MOVEM A,CRGNBA'
|
||
HLRZS A
|
||
POPJ P,
|
||
|
||
CRGNB5: HRRZ A,CRGNBA
|
||
POPJ P,
|
||
|
||
CRRCM1: PUSH P,J
|
||
MOVE J,DOCRN2'
|
||
PUSHJ P,CRUT0 ;OPEN FILE
|
||
PUSHJ P,.URED ;USES .IOT 4,A
|
||
JRST BDHDR
|
||
CAME A,[JRST 1]
|
||
JRST CRRCM2
|
||
MOVE B,[440700,,[ASCII .(UNSTRUCTURED)\.]
|
||
PUSHJ P,DOSAY5
|
||
POP P,J
|
||
MOVEI K,1
|
||
MOVEI N,1
|
||
JRST CRRCM0
|
||
|
||
CRRCM2: CAME A,[JRST 4,1]
|
||
JRST BDHDR
|
||
MOVE B,[440700,,[ASCII .(STRUCTURED)\.]
|
||
PUSHJ P,DOSAY5
|
||
SETOM CRFLAG
|
||
SETZM CRINEQ'
|
||
POP P,CRNPT
|
||
PUSHJ P,.URED"
|
||
JRST DATEXH
|
||
MOVEM A,CRNPT
|
||
MOVEI L,-1
|
||
MOVN J,I
|
||
HRRM J,CRINA0
|
||
PUSHJ P,PDAT
|
||
HRRM I,CRINA1
|
||
ADD I,A
|
||
SETZB L,N
|
||
PUSHJ P,PDAT
|
||
CAIL I,FREEND"-3
|
||
JRST TUFLUK
|
||
CRINE: SOSGE CRNPT
|
||
JRST CRINF
|
||
CRINA0: MOVEI J,(I) ;-BEG.
|
||
CRINA1: HRRZM J, ;HEADER BLOCK
|
||
AOS CRINA1
|
||
SETZM CRINTF'
|
||
SETZM CRITM'
|
||
HRRZM I,CRINM'
|
||
CRINA2: PUSHJ P,.URED"
|
||
JRST DATEXH
|
||
JUMPL A,CRINA5
|
||
CAIL A,600000
|
||
JRST CRINA3
|
||
MOVE L,A
|
||
TLO L,400000
|
||
PUSHJ P,PDAT
|
||
JRST CRINA2
|
||
|
||
CRINA3: CAIN A,600000
|
||
JRST CRINA9
|
||
TRNN A,100000
|
||
JRST CRINA4 ;IF TIME SIG.
|
||
ANDI A,77777 ;IF KEY SIG.
|
||
TRNE A,40000
|
||
ORCMI A,77777
|
||
MOVE L,CRINAT(A)
|
||
PUSHJ P,PDAT
|
||
JRST CRINA2
|
||
|
||
CRINA5: SETOM CRINTF'
|
||
JRST CRINA2
|
||
|
||
CRINA4: ANDI A,17777
|
||
HRLI A,200
|
||
MOVE L,A
|
||
PUSHJ P,PDAT
|
||
JRST CRINA2
|
||
|
||
CRINA9: MOVE G,CRINM ;WHERE MEASURE ENTRIES BEGIN
|
||
SKIPL CRINTF
|
||
JRST CRINC
|
||
MOVEM I,CRINTF
|
||
HRLI L,1000
|
||
PUSHJ P,PDAT
|
||
CRINC: MOVEI L,0 ;END OF MEASURES AND END OF MEASURE
|
||
PUSHJ P,PDAT
|
||
SETZM CRITM
|
||
|
||
CRINB: SKIPN (G)
|
||
JRST CRINE1 ;NO MORE MEASURES
|
||
SKIPL B,(G)
|
||
AOJA G,CRINB
|
||
XCT CRINA0
|
||
HRRZM J,(G)
|
||
MOVE A,G
|
||
CRINB0: SKIPN (A)
|
||
JRST CRINB1
|
||
CAMN B,(A)
|
||
HRRZM J,(A)
|
||
AOJA A,CRINB0
|
||
|
||
CRINB1: PUSHJ P,.URED"
|
||
JRST DATEXH
|
||
CAIL A,600000
|
||
JRST CRINB4
|
||
PUSH P,I
|
||
LDB J,[700,,A] ;J GETS LENGTH
|
||
TRNE A,100000
|
||
ASH J,1
|
||
TRNN A,100000
|
||
IMULI J,3
|
||
LDB B,[70600,,A] ;B GETS PITCH
|
||
MOVE D,CRITM
|
||
ADDM J,CRITM
|
||
CAIG B,1
|
||
JRST CRIB1A
|
||
LDB M,[150200,,A]
|
||
LDB N,[200200,,A]
|
||
DPB N,[20200,,M]
|
||
MOVE L,CRINBT(M) ;ARTIC
|
||
|
||
DPB B,[220700,,L]
|
||
MOVEI I,300
|
||
|
||
CRINB2: PUSHJ P,GCDD
|
||
CAIG J,40
|
||
CAILE I,100
|
||
SOJA J,CRIB2A ;NO, BUT ... FAKE IT
|
||
DPB J,[370500,,L]
|
||
DPB I,[310600,,L]
|
||
MOVEI I,300
|
||
MOVE J,D
|
||
CRINB3: PUSHJ P,GCDD
|
||
CAIGE J,200
|
||
CAILE I,100
|
||
SOJA J,CRIB3A
|
||
DPB J,[60700,,L]
|
||
DPB I,[600,,L]
|
||
POP P,I
|
||
PUSHJ P,PDAT
|
||
JRST CRINB1
|
||
|
||
CRINB4: CAIL A,740000
|
||
JRST CRINB1 ;BEAT
|
||
CAIN A,600000
|
||
JRST CRINC
|
||
CAIGE A,700000
|
||
JRST CRINS
|
||
CRINT: MOVE L,[400000,,104] ;TEMPO
|
||
MOVEI B,4504.
|
||
ANDI A,17777
|
||
IDIV B,A
|
||
DPB B,[311200,,L]
|
||
PUSHJ P,PDAT
|
||
JRST CRINB1
|
||
|
||
CRINS: MOVSI L,400000
|
||
DPB A,[220700,,L]
|
||
PUSHJ P,PDAT
|
||
JRST CRINB1
|
||
|
||
CRINF: PUSHJ P,.UNRED"
|
||
MOVE G,CRINEQ
|
||
JRST CROP3
|
||
|
||
CRIB2A: AOS CRINEQ
|
||
JRST CRINB2
|
||
|
||
CRIB3A: AOS CRINEQ
|
||
JRST CRINB3
|
||
|
||
CRIB1A: POP P,I
|
||
JRST CRINB1
|
||
|
||
CRINE1: SKIPN B,CRINTF
|
||
JRST CRINE
|
||
HRRM I,(B)
|
||
CRINE3: PUSHJ P,.URED"
|
||
JRST DATEXH
|
||
MOVE L,A
|
||
PUSHJ P,PDAT
|
||
MOVE B,[440700,,A]
|
||
CRINE2: ILDB C,B
|
||
CAIN C,"\
|
||
JRST CRINE
|
||
TLNE B,760000
|
||
JRST CRINE2
|
||
JRST CRINE3
|
||
|
||
|
||
CRINBT: 1_15
|
||
2_15
|
||
3_15
|
||
3_15
|
||
REPEAT 4,4_15
|
||
REPEAT 10,10_15
|
||
|
||
403,,443444
|
||
403,,443344
|
||
403,,343344
|
||
403,,343334
|
||
403,,333334
|
||
403,,333333
|
||
403,,330333
|
||
400,,330333
|
||
400,,330033
|
||
400,,30033
|
||
400,,30003
|
||
400,,3
|
||
CRINAT: 400,,0
|
||
400,,1000
|
||
401,,1000
|
||
401,,1100
|
||
401,,101100
|
||
401,,101110
|
||
401,,111110
|
||
401,,111111
|
||
401,,112111
|
||
402,,112111
|
||
402,,112211
|
||
402,,212211
|
||
402,,212221
|
||
|
||
CRCUR: JUMPL N,CRCUR5 ;IN BLOCK
|
||
JUMPN N,CRCUR4 ;BEG. OF FILE
|
||
PUSHJ P,.URED" ;CHECKSUM
|
||
JRST DATEXH
|
||
CAME A,CRCURM
|
||
JRST CKSMER
|
||
CRCUR4: PUSHJ P,.URED"
|
||
JRST DATEXH
|
||
MOVEM A,CRCURM'
|
||
HLREM A,N ;WORD COUNT
|
||
CAIN N,(JFCL)
|
||
MOVEI A,0
|
||
JUMPE A,CPOPJ
|
||
JUMPG A,BDHDR
|
||
CRCUR5: PUSHJ P,.URED
|
||
JRST DATEXH
|
||
MOVE C,CRCURM
|
||
ROT C,1
|
||
ADD C,A
|
||
MOVEM C,CRCURM
|
||
AOJA N,CPOPJ
|
||
|
||
BDHDR: SKIPA B,[440700,,[ASCII ./BAD DATA IN FILE\.]]
|
||
CKSMER: MOVE B,[440700,,[ASCII ./CHECKSUM ERROR\.]]
|
||
JRST DEATH
|
||
|
||
DATEXH: MOVE B,[440700,,[ASCII ./FILE UNEXPECTEDLY ENDS\.]]
|
||
JRST DEATH
|
||
|
||
|
||
|
||
PDAT1A: SETZM PLWN(L)
|
||
PDAT1: HRL L,CRDELZ
|
||
SETZM CRDELZ
|
||
PDAT: MOVEM L,(I)
|
||
CAIGE I,FREEND"-1
|
||
AOJA I,CPOPJ
|
||
JRST TUFLUK
|
||
|
||
DETEMPO: 883.
|
||
|
||
CRPREV: BLOCK 10
|
||
CRPREW: BLOCK 10
|
||
CRRSP: BLOCK 10
|
||
|
||
|
||
|
||
;NEW "RELAY" NUMBERS: (OLD PITCH-1) + 200*(MAN-1)
|
||
NRNO==1400
|
||
|
||
DOTAP1: MOVE A,TAPTAB(C)
|
||
PUSHJ P,TAPKIL"
|
||
DOTAPE: SOSL C,NTAPES
|
||
JRST DOTAP1
|
||
|
||
DOTAP2: AOS C,NTAPES
|
||
CAIL C,NDIR
|
||
JRST DONE
|
||
MOVE D,COML(H)
|
||
JUMPL D,DONE
|
||
HLRZ B,SYMS(D)
|
||
CAIE B,NUMBER
|
||
JRST BADATA
|
||
HRRZ A,SYMS(D)
|
||
PUSHJ P,FILEST"
|
||
JRST SSSB
|
||
MOVEM A,TAPTAB(C)
|
||
AOJA H,DOTAP2
|
||
|
||
|
||
CRUT: TDZA L,L
|
||
CRUT0: MOVEI L,1
|
||
JUMPL J,CRUT1
|
||
MOVE A,J
|
||
PUSHJ P,TAPCK
|
||
PUSHJ P,NAMFIL
|
||
CRUT4: PUSHJ P,TTYON
|
||
PUSHJ P,FIND
|
||
JRST FNF
|
||
JRST CRUT2
|
||
|
||
CRUT1: MOVEI A,0
|
||
PUSHJ P,NAMFIL ;DECODE FILE NAME
|
||
JUMPN A,CRUT4
|
||
PUSHJ P,FINDIT
|
||
PUSHJ P,TTYON
|
||
CRUT2: JUMPN L,CPOPJ
|
||
PUSHJ P,.URED"
|
||
JRST BADATA
|
||
HRRZ B,A
|
||
JUMPN B,CRUTM
|
||
MOVN C,A
|
||
|
||
CRUT3: PUSHJ P,.URED"
|
||
JRST BADATA
|
||
MOVEM A,SLAK(C)
|
||
AOBJN C,CRUT3
|
||
ADDI C,SLAK-1
|
||
PUSHJ P,DOTITE
|
||
JRST CRUT2
|
||
|
||
CRUTM: HRREM A,CRFLAG'
|
||
HLRZ C,A
|
||
MOVEI L,(A)
|
||
PUSHJ P,PDAT
|
||
|
||
CRUTM1: PUSHJ P,.URED"
|
||
JRST BADATA
|
||
MOVE L,A
|
||
PUSHJ P,PDAT
|
||
SOJG C,CRUTM1
|
||
MOVEI G,0
|
||
JRST CROP3
|
||
|
||
TAPCK: MOVE C,NTAPES'
|
||
CAME A,TAPTAB-1(C)
|
||
SOJG C,.-1
|
||
JUMPLE C,BADATA
|
||
POPJ P,
|
||
|
||
NAMFIL: PUSH P,A
|
||
PUSHJ P,RCOMN ;GET FILE NAME
|
||
MOVE C,[(700)SLAK-1
|
||
MOVSI K,400000
|
||
NAMFL0: MOVE J,K
|
||
NAMFL9: MOVSI K,400000
|
||
MOVE D,[440600,,K]
|
||
|
||
NAMFL1: ILDB E,C
|
||
CAIN E,"\
|
||
JRST NAMFL2
|
||
SUBI E,40
|
||
JUMPL E,NAMFL1 ;IGNORE LOOSING CHARS.
|
||
JUMPE E,NAMFL0
|
||
CAIN E,';
|
||
JRST NAMFL3
|
||
CAIN E,':
|
||
JRST NAMFL4
|
||
CAIL E,100
|
||
JRST NAMFL1
|
||
TLNE D,770000
|
||
IDPB E,D
|
||
JRST NAMFL1
|
||
|
||
NAMFL2: MOVEM J,NAMA'
|
||
MOVEM K,NAMB'
|
||
POP P,A
|
||
POPJ P,
|
||
|
||
NAMFL3: MOVE A,K
|
||
PUSHJ P,FILEST"
|
||
JRST BADSNM
|
||
JRST NAMFL9
|
||
|
||
NAMFL4: HLRZM K,(P)
|
||
JRST NAMFL9
|
||
|
||
BADSNM: MOVE B,[440700,,[ASCII ./BAD SYSTEM NAME\.]]
|
||
JRST DEATH
|
||
|
||
FIND: PUSHJ P,FILEST"
|
||
JRST SSSB
|
||
MOVE A,NAMA'
|
||
MOVE B,NAMB'
|
||
PUSHJ P,OPNRD"
|
||
POPJ P,
|
||
JRST SPOPJ
|
||
|
||
|
||
FINDIT: MOVE C,NTAPES
|
||
JUMPLE C,WRITW1
|
||
FINDT1: JUMPLE C,FNF
|
||
MOVE A,TAPTAB-1(C)
|
||
PUSHJ P,FIND
|
||
SOJA C,FINDT1
|
||
POPJ P,
|
||
|
||
|
||
FNF: MOVE B,[440700,,[ASCII ./FILE NOT FOUND\.]]
|
||
JRST DEATH
|
||
|
||
PRINT: SOJ H,
|
||
PUSH P,DONEW
|
||
PRINT1: AOJ H,
|
||
MOVE B,[HARMON]
|
||
PUSHJ P,GET
|
||
SKIPA B,[GOTO] ;MAY BE VOICE
|
||
JRST PHARM
|
||
PUSHJ P,GET
|
||
SKIPA B,[NUMBER]
|
||
JRST PVOICE
|
||
PUSHJ P,GET
|
||
SKIPA B,[MODALL]
|
||
JRST PNUMB
|
||
PUSHJ P,GET
|
||
SKIPA B,0
|
||
JRST PALL
|
||
PUSHJ P,GET
|
||
SKIPA
|
||
JRST PNIL
|
||
POPJ P,
|
||
PNIL: .VALUE ;PRINT A NOTHING
|
||
JRST PRINT1
|
||
PHARM: .VALUE ;PRINT HARMONIC STRUCTURE TABLE
|
||
JRST PRINT1
|
||
PNUMB: MOVE B,A
|
||
PNUM1: IDIVI B,10.
|
||
MOVEI A,60(C)
|
||
PUSHJ P,TYO
|
||
JUMPN B,PNUM1
|
||
JRST PRINT1
|
||
|
||
PALL: .VALUE
|
||
POPJ P,
|
||
PVOICE: .VALUE
|
||
POPJ P,
|
||
|
||
WRIT: MOVEI B,UNSTRU
|
||
PUSHJ P,GET
|
||
SKIPA B,[STRUCT]
|
||
JRST WRIT10
|
||
PUSHJ P,GET
|
||
SKIPA B,[HARMON]
|
||
JRST WRIT10
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
WRIT10: PUSH P,B
|
||
MOVEI B,NUMBER
|
||
PUSHJ P,GET
|
||
JRST WRITW
|
||
PUSHJ P,TAPCK
|
||
|
||
WRIT13: PUSHJ P,NAMFIL
|
||
PUSHJ P,FILEST"
|
||
JRST SSSB
|
||
MOVE A,NAMA
|
||
MOVE B,NAMB
|
||
PUSHJ P,OPNWR"
|
||
JRST TUFLUK
|
||
POP P,C
|
||
MOVEI D,0
|
||
|
||
WRIT11: HLRZ A,TITL(D)
|
||
JUMPE A,WRIT2
|
||
CAME A,C
|
||
AOJA D,WRIT11
|
||
HRRZ B,TITL(D)
|
||
PUSHJ P,WRITE
|
||
|
||
WRIT2: HRRZ B,SYMS(C)
|
||
PUSHJ P,WRITE
|
||
MOVE A,NAMA
|
||
MOVE B,NAMB
|
||
PUSHJ P,FILE"
|
||
JRST TUFLUK
|
||
JRST DONE
|
||
|
||
|
||
WRITE: HLRZ D,(B)
|
||
SUBI D,1(B)
|
||
MOVS A,D
|
||
HRR A,(B)
|
||
PUSHJ P,.UWR"
|
||
JRST TUFLUK
|
||
|
||
WRIT12: MOVE A,1(B)
|
||
PUSHJ P,.UWR"
|
||
JRST TUFLUK
|
||
ADDI B,1
|
||
SOJG D,WRIT12
|
||
POPJ P,
|
||
|
||
WRITW: SKIPG NTAPES
|
||
JRST WRITW1
|
||
MOVE A,TIME
|
||
IDIV A,NTAPES
|
||
MOVE A,TAPTAB(B)
|
||
JRST WRIT13
|
||
|
||
WRITW1: MOVE B,[(700)[ASCII ./NO TAPES\.]-1]
|
||
DEATH": PUSHJ P,DOSAY5
|
||
JRST REALLY
|
||
|
||
|
||
CRSC: MOVE 0,[(1)SAVAC
|
||
BLT 0,SAVAC+16
|
||
PUSHJ P,SMOLGN"
|
||
MOVE 0,[(SAVAC)1
|
||
BLT 0,17
|
||
PUSHJ P,CRLF
|
||
MOVE C,SMOLTM"
|
||
LSH C,-7
|
||
IOR C,[ASCII ./ \.]
|
||
MOVE B,[(700)B
|
||
PUSHJ P,DOSAY5
|
||
MOVEI L,1
|
||
PUSHJ P,PDAT
|
||
SETZB G,CRFLAG'
|
||
SETZB A,CRSCD'
|
||
|
||
CRSC0: MOVE L,SMOLTM"(A)+1
|
||
JUMPE L,CRSC1
|
||
IMUL L,[(,-1000)
|
||
MOVE M,L
|
||
ASH M,-3
|
||
SUB L,M
|
||
HRR L,SMOLPT"(A)+1
|
||
HRR L,SMOLCP(L)
|
||
PUSH P,L
|
||
TRO L,EVENON
|
||
HLL L,CRSCD
|
||
MOVEM M,CRSCD
|
||
PUSHJ P,PDAT
|
||
POP P,L
|
||
PUSHJ P,PDAT
|
||
AOJA A,CRSC0
|
||
|
||
CRSC1: SKIPE SMOLTM+1(A)+1
|
||
AOJA A,CRSC0
|
||
JRST CROP2
|
||
|
||
SMOLCP: 45
|
||
46
|
||
50
|
||
52
|
||
53
|
||
55
|
||
57
|
||
60
|
||
|
||
CRKY: PUSHJ P,TTYON
|
||
PUSHJ P,CRLFQ
|
||
SETZM CRKYS1'
|
||
MOVE A,[(4)200000
|
||
MOVEM A,CRKYS2'
|
||
|
||
CRKYR: MOVEI L,1
|
||
PUSHJ P,PDAT
|
||
SETZB G,CRFLAG'
|
||
CONO 724,1
|
||
MOVEM L,CRKYDS'
|
||
|
||
CRKY3: CONSO 724,2
|
||
JRST .-1
|
||
CONO 724,1
|
||
SOS CRKYD'
|
||
|
||
CRKY1: DATAI 724,A
|
||
MOVE C,A
|
||
XOR A,CRKYS1'
|
||
MOVE B,A
|
||
JUMPE A,CRKY2
|
||
SUBI A,1
|
||
ANDCA A,B
|
||
XORM A,CRKYS1'
|
||
ANDM A,C
|
||
TLNN A,777000
|
||
TLOA A,32000
|
||
PUSHJ P,CRKY10
|
||
|
||
CRKY11: FAD A,[0
|
||
LSH A,-33
|
||
CAILE A,27
|
||
ADDI A,22
|
||
ADDI A,61
|
||
|
||
CRKY13: SKIPE C
|
||
TRO A,EVENON
|
||
SOSL CRKYDS'
|
||
SETZM CRKYD
|
||
HRL A,CRKYD'
|
||
MOVE L,A
|
||
PUSHJ P,PDAT
|
||
SETZM CRKYD
|
||
JUMPN M,CRKY2
|
||
JRST CRKY1
|
||
|
||
CRKY10: LSH A,-11
|
||
TLO A,43000
|
||
POPJ P,
|
||
|
||
CRKY2: DATAI 730,A
|
||
MOVE C,A
|
||
XOR A,CRKYS2'
|
||
MOVE B,A
|
||
JUMPE A,CRKY3
|
||
SUBI A,1
|
||
ANDCA A,B
|
||
XORM A,CRKYS2'
|
||
ANDM A,C
|
||
TLNN A,777000
|
||
TLOA A,32000
|
||
PUSHJ P,CRKY10
|
||
|
||
CRKY21: FAD A,[0
|
||
LSH A,-33
|
||
CAIGE A,27
|
||
JRST CRKY22
|
||
ADDI A,15
|
||
AOJA M,CRKY13
|
||
|
||
CRKY22: JUMPE C,CRKY2
|
||
CAIN A,24
|
||
JRST CROP2
|
||
CAIE A,20
|
||
JRST CRKY2
|
||
MOVE I,FREP'
|
||
JRST CRKYR
|
||
|
||
DEFINE CONCAT A,B
|
||
A!B!TERMIN
|
||
|
||
TTSTOU: MOVEI L,1
|
||
PUSHJ P,PDAT
|
||
SETZB N,CRDELZ'
|
||
SETZB G,K
|
||
TTGET: MOVE A,(K)
|
||
JUMPE A,TTGET1
|
||
ADD A,TTOX
|
||
MOVEM A,MEAS(K)
|
||
PUSHJ P,TT123Y
|
||
AOJA K,TTGET
|
||
|
||
TTGET1: MOVEM K,TTMG' ;# OF LINES
|
||
SETZB H,CRFLAG'
|
||
|
||
TT0: MOVEI M,0
|
||
MOVSI J,377777
|
||
TRO F,NOMORF
|
||
|
||
TT11: CAMN M,TTMG
|
||
JRST TT111
|
||
SKIPGE MEAS(M)
|
||
AOJA M,TT11
|
||
TRZ F,NOMORF
|
||
MOVE A,@LOCA(M) ;NOTE ENTRY
|
||
LDB B,[A(60700) ;NUM
|
||
LDB C,[A(600) ;DEN
|
||
IMUL B,TEMPF(M)
|
||
IDIV B,C ;COUNTS INTO MEASURE
|
||
ADD B,MSTM(M)
|
||
CAMGE B,J
|
||
MOVE K,M ;PART
|
||
CAMGE B,J
|
||
MOVEM B,J
|
||
AOJA M,TT11
|
||
|
||
TT111: MOVEI M,0
|
||
TT112: CAMN M,H
|
||
JRST TT12
|
||
TRZ F,NOMORF
|
||
HLRZ B,ALIVE(M)
|
||
CAMGE B,J
|
||
MOVEI K,ALIVE(M) ;PART+ALIVE
|
||
CAMGE B,J
|
||
MOVEM B,J
|
||
AOJA M,TT112
|
||
|
||
TT12: TRNE F,NOMORF
|
||
JRST CROP2
|
||
EXCH N,J
|
||
SUB J,N
|
||
ADDM J,CRDELZ'
|
||
CAIGE K,ALIVE
|
||
JRST TT120
|
||
MOVE L,(K) ;COMPILE 'OFF'
|
||
PUSHJ P,PDAT1A
|
||
HRLI K,1(K)
|
||
BLT K,ALIVE-1(H)
|
||
SOJA H,TT0
|
||
|
||
TT120: LDB A,[(220700)@LOCA(K)] ;COMPILE 'ON'
|
||
MOVE B,K
|
||
CAILE B,5
|
||
SUBI B,6
|
||
ASH B,7
|
||
ADDI B,-1(A)
|
||
CAIGE H,ALIVEL
|
||
SKIPE PLWN(B)
|
||
AOJA G,[SOJA H,TT0A] ;FORGET IT
|
||
|
||
TT1205: MOVEI L,EVENON(B)
|
||
SETOM PLWN(B)
|
||
PUSHJ P,PDAT1
|
||
|
||
TT121: LDB A,[(150500)@LOCA(K)] ;ARTIC. FIELD
|
||
CAILE A,10
|
||
MOVEI A,5
|
||
LDB C,[(370400)@LOCA(K)] ;N
|
||
LDB D,[(310600)@LOCA(K)] ;D
|
||
CAIGE A,5
|
||
MOVEI C,1
|
||
IMUL C,TTART1(A)
|
||
IMUL D,TTART2(A)
|
||
IMUL C,TEMPF(K)
|
||
IDIV C,D
|
||
LDB D,[(370400)@LOCA(K)]
|
||
LDB E,[(310600)@LOCA(K)]
|
||
IMUL D,TEMPF(K)
|
||
IDIV D,E
|
||
LDB E,[(60700)@LOCA(K)]
|
||
LDB A,[(600)@LOCA(K)]
|
||
IMUL E,TEMPF(K)
|
||
IDIV E,A
|
||
ADD D,E
|
||
ADD D,MSTM(K)
|
||
SUB D,C
|
||
HRL B,D
|
||
MOVEM B,ALIVE+1(H)
|
||
TT0A: PUSHJ P,TT122 ;AOSES H
|
||
JRST TT0
|
||
|
||
TT122: AOSA A,LOCA(K)
|
||
TT122A: MOVE A,(A) ;NOTE ENTRY
|
||
JUMPE A,TT123
|
||
TLNE A,177
|
||
TLNN A,377600
|
||
SKIPL A
|
||
JRST TT122M
|
||
LDB C,[(600)A] ;TEMPO WD.
|
||
LDB D,[(60700)A]
|
||
IMULI C,30000.
|
||
LDB E,[(311200)A]
|
||
IMUL D,E
|
||
IDIV C,D
|
||
MOVEM C,TEMPF(K)
|
||
JRST TT122
|
||
|
||
TT123: SOS LOCA(K) ;END OF MEASURE
|
||
SKIPGE MEAS(K)
|
||
JRST TT123X
|
||
TT123U: AOS A,MEAS(K)
|
||
|
||
TT123Y: MOVEM N,MSTM(K)
|
||
MOVE A,(A) ;MEASURE ENTRY
|
||
JUMPE A,TT123X
|
||
LDB B,[(311300)A]
|
||
JUMPN B,TT123U
|
||
|
||
TT124: ADD A,TTOX
|
||
MOVEM A,LOCA(K) ;MEASURE PTR.
|
||
JRST TT122A
|
||
|
||
TT123X: SETOM MEAS(K)
|
||
TT122M: AOJA H,CPOPJ
|
||
|
||
TTART1: 0
|
||
1
|
||
3
|
||
1
|
||
1
|
||
1
|
||
3
|
||
1
|
||
1
|
||
|
||
TTART2: 1
|
||
10
|
||
20
|
||
4
|
||
2
|
||
10
|
||
20
|
||
4
|
||
2
|
||
|
||
DOERA: HRRZ N,(P)
|
||
MOVE A,COML+1(H)
|
||
JUMPL A,BADATA
|
||
MOVE A,SYMS(A)
|
||
CAME A,[MODALL
|
||
JRST DOERA1
|
||
SKIPL COML+2(H)
|
||
JRST BADATA
|
||
CAIN N,DOERAS+1
|
||
TRNE F,PLEASF
|
||
SKIPA
|
||
JRST BADATA
|
||
MOVEI A,FREE"
|
||
XCT (N)
|
||
XCT 4(N)
|
||
MOVE M,NSYMS
|
||
SOJL M,DOERAX
|
||
|
||
DOERA4: HLRZ A,SYMS(M)
|
||
CAIN A,HARMON
|
||
XCT 1(N)
|
||
CAIE A,STRUCT
|
||
CAIN A,UNSTRU
|
||
XCT 1(N)
|
||
SOJGE M,DOERA4
|
||
JRST DOERAX
|
||
|
||
DOERA1: CAME A,[MODEXC]
|
||
AOJA H,DOERA3
|
||
ADDI H,2
|
||
MOVEI A,COML(H)
|
||
|
||
DOERA2: MOVE C,(A)
|
||
JUMPL C,DOERA5
|
||
HLRZ C,SYMS(C)
|
||
CAIN C,HARMON
|
||
AOJA A,DOERA2
|
||
CAIE C,STRUCT
|
||
CAIN C,UNSTRU
|
||
AOJA A,DOERA2
|
||
JRST BADATA
|
||
|
||
DOERA3: SKIPGE COML(H)
|
||
JRST DOERAX
|
||
XCT 2(N)
|
||
AOJA H,DOERA3
|
||
|
||
DOERA5: ADD C,NSYMS
|
||
DOERA7: HLRZ A,SYMS(C)
|
||
CAIN A,HARMON
|
||
JRST DOERA6
|
||
CAIE A,STRUCT
|
||
CAIN A,UNSTRU
|
||
JRST DOERA6
|
||
DOERA0: SOJGE C,DOERA7
|
||
DOERAX: POP P,A
|
||
JRST 5(N)
|
||
|
||
DOERA6: MOVEI B,COML(H)
|
||
DOERA9: SKIPGE (B)
|
||
JRST DOERA8
|
||
HRRZ A,(B)
|
||
CAME A,C
|
||
AOJA B,DOERA9
|
||
JRST DOERA0
|
||
|
||
DOERA8: XCT 3(N)
|
||
JRST DOERA0
|
||
;DOERS USES A,B,C,D
|
||
|
||
DOERS: PUSHJ P,GCHEK
|
||
|
||
DOERS1: MOVEM C,DOERSC'
|
||
HRRZ B,SYMS(C)
|
||
SETZM SYMS(C)
|
||
IFE 6V, HRRM C,RUDGE0
|
||
PUSHJ P,RUDGE
|
||
MOVEI D,0
|
||
|
||
DOERS5: HLRZ B,TITL(D)
|
||
JUMPE B,DOERS9
|
||
CAME B,DOERSC
|
||
AOJA D,DOERS5
|
||
|
||
DOERS8: HRRZ B,TITL(D)
|
||
HRLI A,TITL+1(D)
|
||
HRRI A,TITL(D)
|
||
BLT A,TITL+TITLL-2
|
||
PUSHJ P,RUDGE
|
||
DOERS9: MOVE C,DOERSC
|
||
POPJ P,
|
||
|
||
RUDGE: MOVEM B,RUDGEB' ;BLOCK ORIGIN
|
||
MOVEM B,RUDGER'
|
||
AOS RUDGER
|
||
HLRZ D,(B) ;BLOCK END+1
|
||
SUBM B,D
|
||
HLRZ B,(B)
|
||
|
||
RUDGE7: HLRZ A,(B)
|
||
CAMLE A,B
|
||
CAILE A,FREEND"
|
||
JRST RUDGE5
|
||
MOVE C,A
|
||
ADD C,D
|
||
HRLM C,(B)
|
||
MOVE B,A
|
||
JRST RUDGE7
|
||
|
||
RUDGE5: MOVE B,RUDGEB
|
||
HLL B,(B)
|
||
BLT B,FREEND"(D)
|
||
ADDM D,FREP
|
||
MOVE C,NSYMS
|
||
|
||
RUDGE2: HRRZ A,SYMS(C)-1
|
||
CAMGE A,RUDGEB
|
||
JRST RUDGE3
|
||
HLRZ A,SYMS(C)-1
|
||
CAIE A,STRUCT
|
||
CAIN A,UNSTRU
|
||
JRST RUDGE4
|
||
CAIN A,HARMON
|
||
JRST RUDGE4
|
||
|
||
RUDGE3: SOJG C,RUDGE2
|
||
MOVEI C,0
|
||
|
||
RUDGE6: HRRZ B,TITL(C)
|
||
JUMPE B,RUDGE8
|
||
CAMLE B,RUDGEB
|
||
ADDM D,TITL(C)
|
||
AOJA C,RUDGE6
|
||
|
||
RUDGE8:IFE 6V,[
|
||
MOVSI C,PSGTLT-HARCDE
|
||
RUDGE9: HRRZ B,PSGTLT(C)
|
||
CAMN B,RUDGER
|
||
RUDGE0: HRROI B, ;SYM #
|
||
CAMLE B,RUDGEB
|
||
ADDM D,PSGTLT(C)
|
||
SKIPGE B
|
||
MOVEM B,PSGTLT(C)
|
||
AOBJN C,RUDGE9
|
||
] POPJ P,
|
||
|
||
RUDGE4: CAMN A,RUDGEB
|
||
MOVNM D,SYMS(C)-1
|
||
ADDM D,SYMS(C)-1
|
||
JRST RUDGE3
|
||
|
||
GCHEK: HRRZ C,COML(H)
|
||
HLRZ B,SYMS(C)
|
||
CAIN B,HARMON
|
||
POPJ P,
|
||
CAIE B,STRUCT
|
||
CAIN B,UNSTRU
|
||
POPJ P,
|
||
JRST BADATA
|
||
|
||
NUMVLV: MOVEI A,10.
|
||
HRRM A,NUMVL8
|
||
TRZ F,BEGUNF
|
||
JRST NUMVLW
|
||
|
||
NUMVOC: SKIPA A,[10
|
||
NUMVAL: MOVEI A,10.
|
||
HRRM A,NUMVL8
|
||
TRO F,BEGUNF
|
||
NUMVLW: MOVEI C,COML+1(H)
|
||
TRZ F,PREVCF+MINUSF
|
||
MOVEI A,0
|
||
|
||
NUMVL1: SKIPGE (C)
|
||
JRST NUMVL9
|
||
HRRZ B,(C)
|
||
HLRZ B,SYMS(B)
|
||
CAIE B,MINUS
|
||
JRST NUMVL3
|
||
TRO F,BEGUNF
|
||
TRON F,MINUSF+PREVCF
|
||
AOJA C,NUMVL1
|
||
|
||
NUMVL9: MOVEI H,.-COML-$."-1(C)
|
||
TRZE F,MINUSF
|
||
MOVNS A
|
||
POPJ P,
|
||
|
||
NUMVL2: CAIE B,NUMBER
|
||
JRST NUMVLX
|
||
HRRZ B,(C)
|
||
HRRZ B,SYMS(B)
|
||
NUMVL8: IMULI A,10.
|
||
ADD A,B
|
||
NUMVL0: TRO F,PREVCF+BEGUNF
|
||
AOJA C,NUMVL1
|
||
|
||
NUMVL3: CAIE B,MULTIP
|
||
JRST NUMVL2
|
||
HRRZ B,(C)
|
||
HRRZ B,SYMS(B)
|
||
ADD B,NUMVL8
|
||
IMUL A,-10(B)
|
||
JRST NUMVL0
|
||
|
||
NUMVLX: TRNE F,BEGUNF
|
||
JRST NUMVL9
|
||
AOJA C,NUMVL1
|
||
|
||
DOVALU: MOVE C,COML(H)
|
||
JUMPL C,DONE
|
||
PUSHJ P,CRLF
|
||
HLRZ A,SYMS(C)
|
||
CAIE A,PARAM
|
||
JRST DOVAL4
|
||
HRRZ A,SYMS(C)
|
||
HLRZ B,DOPY(A)
|
||
CAIN B,(JFCL)
|
||
AOJA H,DOVALU
|
||
CAIE B,(MOVEM A,)
|
||
JRST SSSB
|
||
MOVE A,@DOPY(A)
|
||
DOVAL5: PUSHJ P,DPT
|
||
AOJA H,DOVALU
|
||
|
||
|
||
DOVAL4: MOVE A,SYMS(C)
|
||
CAMN A,[(GOTO)17]
|
||
JRST DOVAL6
|
||
CAME A,[(GOTO)12
|
||
JRST BADATA
|
||
MOVE A,TUNVAL'
|
||
JRST DOVAL5
|
||
|
||
DOVAL6: MOVSI D,-MAXNP"
|
||
SETZM DOVALW'
|
||
DOVAL9: SKIPGE E,PRECLE"(D)
|
||
JRST DOVAL8
|
||
MOVE B,[440700,,[ASCII ., \.]]
|
||
SKIPGE DOVALW
|
||
PUSHJ P,DOSAY5
|
||
HRLI E,CLEF
|
||
HRLZ C,NNSYMS
|
||
CAME E,SYMS(C)
|
||
AOBJN C,.-1
|
||
MOVEI A,1(D)
|
||
PUSHJ P,DPT
|
||
JUMPGE C,DOVAL7
|
||
MOVEI C,(C)
|
||
PUSHJ P,DOSAY6
|
||
JRST DOVAL8
|
||
|
||
DOVAL7: MOVE B,[440700,,[ASCII . ?\.]]
|
||
PUSHJ P,DOSAY5
|
||
DOVAL8: SETOM DOVALW
|
||
AOBJN D,DOVAL9
|
||
AOJA H,DOVALU
|
||
|
||
DOLIST: PUSHJ P,CRLF
|
||
PUSHJ P,TTYON
|
||
PUSHJ P,NUMVOC
|
||
MOVEM A,G
|
||
MOVE C,NSYMS
|
||
SUBI C,1
|
||
|
||
DOLST1: JUMPL C,DONE
|
||
HLRZ A,SYMS(C)
|
||
CAME A,G
|
||
SOJA C,DOLST1
|
||
PUSHJ P,DOSAY6
|
||
PUSHJ P,CRLF
|
||
SOJA C,DOLST1
|
||
|
||
DOTITL: MOVE A,COML(H)+1
|
||
JUMPL A,BADATA
|
||
HLRZ B,SYMS(A)
|
||
CAIN B,HARMON
|
||
JRST DOTIT1
|
||
CAIE B,UNSTRU
|
||
CAIN B,STRUCT
|
||
JRST DOTIT1
|
||
JRST BADATA
|
||
|
||
DOTIT1: HRRZM A,DOTITA'
|
||
PUSHJ P,RCOMN
|
||
PUSHJ P,DOTITE
|
||
JRST RCS
|
||
|
||
|
||
DOTITE: PUSHJ P,TTYOFF
|
||
MOVEM C,DOERSC'
|
||
MOVEI D,0
|
||
|
||
DOTIT2: CAIL D,TITLL-1
|
||
JRST TUFLUK
|
||
HLRZ A,TITL(D)
|
||
JUMPE A,DOTIT3
|
||
CAME A,DOTITA
|
||
AOJA D,DOTIT2
|
||
PUSHJ P,DOERS8 ;TO ERASE OLD TITLE
|
||
|
||
DOTIT3: MOVE I,FREP
|
||
MOVEI D,0
|
||
SKIPE TITL(D)
|
||
AOJA D,.-1
|
||
HRL A,DOTITA
|
||
HRR A,I
|
||
MOVE B,I
|
||
HRLI B,SLAK-1
|
||
ADDI I,2(C)
|
||
SUBI I,SLAK
|
||
CAIL I,FREEND"
|
||
JRST TUFLUK
|
||
BLT B,(I)
|
||
HRLZM I,@FREP
|
||
MOVEM I,FREP
|
||
MOVEM A,TITL(D)
|
||
SETZM TITL+1(D)
|
||
POPJ P,
|
||
|
||
IFE 6V,[
|
||
SCLBLD: MOVE A,[-1]
|
||
MOVEM A,HARN
|
||
JRST HARBLD
|
||
HARAUG: TDZA G,G ;AUGMENT HST
|
||
HARSCL: MOVNI G,1
|
||
JRST HARC
|
||
HARBLD: MOVEI G,1 ;BUILD HST
|
||
HARC: ADDI H,1
|
||
MOVE B,COML(H)
|
||
HLRZ A,SYMS(B)
|
||
JUMPLE G,HARC1
|
||
JUMPE A,HARC3 ;EX NIHILO
|
||
HARC1: CAIE A,HARMON
|
||
JRST BADATA ;CAN'T BUILD FROM THIS
|
||
HRRZ B,SYMS(B)
|
||
AOJA B,HARC2
|
||
|
||
HARC3: MOVE I,FREP ;BUILD
|
||
CAIL I,FREEND"-402
|
||
JRST TUFLUK
|
||
HRRM I,SYMS(B) ;CALL IT A HST
|
||
MOVEI A,HARMON
|
||
HRLM A,SYMS(B)
|
||
ADDI I,401
|
||
HRL A,I
|
||
HRRI A,2
|
||
MOVEM A,-401(I)
|
||
MOVEM I,FREP
|
||
SETZM -400(I)
|
||
MOVEI A,-377(I)
|
||
HRLI A,-400(I)
|
||
BLT A,-1(I)
|
||
MOVEI B,-400(I)
|
||
HARC2: HRRM B,HART ;DROPS THRU
|
||
|
||
HARBL1: PUSHJ P,NUMVAL
|
||
ADDI H,1
|
||
MOVE E,COML(H)
|
||
JUMPL E,HARBL8
|
||
MOVE B,SYMS(E)
|
||
CAMN B,[PUNCCL]
|
||
HARBL8: CAIL A,5 ;FOUR CHANNELS ONLY
|
||
JRST BADATA
|
||
HARBL0: JUMPL A,BADATA
|
||
MOVE L,A
|
||
JUMPLE G,HARBL9
|
||
MOVSI D,-400
|
||
MOVE C,[MOVEM C,@HART]
|
||
SKIPE L
|
||
MOVE C,[DPB C,@HART(L)]
|
||
MOVEM C,HARBM2
|
||
MOVEI C,0
|
||
HARBM2: MOVEM C,@HART ;OR DPB C,@HART(L)
|
||
AOBJN D,HARBM2
|
||
|
||
HARBL9: JUMPL E,DONE
|
||
MOVSI D,-400
|
||
|
||
HARTO: PUSHJ P,NUMVAL
|
||
ADDI H,1
|
||
MOVE B,COML(H)
|
||
JUMPL B,BADATA
|
||
MOVE B,SYMS(B)
|
||
CAME B,HARTOQ(G)+1 ;COMMAS ONLY HERE
|
||
JRST BADATA
|
||
HRRM A,HARMN ;HARMONIC #
|
||
MOVEM A,HARSN1'
|
||
PUSHJ P,NUMVAL
|
||
MOVE E,COML(H)+1
|
||
JUMPL E,HARBL2
|
||
MOVE B,SYMS(E)
|
||
CAME B,[PUNCSC] ;SEMI-COLONS ONLY, DROPS THRU
|
||
JRST BADATA
|
||
|
||
HARBL2: MOVEM A,HARSN2'
|
||
JUMPL G,HARSC
|
||
CAILE A,2000. ;LET'S BE REASONABLE
|
||
|
||
JRST BADATA
|
||
MOVMM A,HARAM' ;MAGNITUDE
|
||
IDIV A,HARAM
|
||
MOVEM A,HARAS' ;SIGN
|
||
HARL: SKIPE HARSN1 ;HARMONIC #
|
||
JRST HARL2
|
||
PUSHJ P,RANDOM ;WHITE NOISE
|
||
IDIVI A,2048.
|
||
JRST HARL3
|
||
HARL2: MOVEI A,(D)
|
||
HARMN: SKIPE HARN'
|
||
JRST HARNT ;USE PIANO SCALE
|
||
IMULI A,
|
||
IMUL A,HARAS
|
||
HARMN2: PUSHJ P,XSIN
|
||
HARL3:
|
||
ADDI B,2047.
|
||
IMUL B,HARAM
|
||
IDIVI B,16000.
|
||
JUMPN L,HARSC0
|
||
MOVE L,[-4,,1]
|
||
HARSC0: LDB A,HARPT(L)-1
|
||
ADD A,B
|
||
HARSC1: CAIL A,700
|
||
JRST HAROF ;OVERFLOW
|
||
DPB A,HARPT(L)-1
|
||
JUMPGE L,HARMN5
|
||
AOBJN L,HARSC0
|
||
MOVEI L,0
|
||
|
||
HARMN5: AOBJN D,HARL1 ;NEXT CYCLE
|
||
AOJA H,HARBL9 ;NEXT HARMONIC
|
||
|
||
HARL1: JUMPGE G,HARL
|
||
JRST HARSC
|
||
|
||
HARTOQ: PUNCSL
|
||
PUNCCM
|
||
PUNCCM
|
||
|
||
HARSC: JUMPN L,HARSC8
|
||
MOVE L,[-4,,1]
|
||
HARSC8: LDB A,HARPT(L)-1
|
||
IMUL A,HARSN1
|
||
IDIV A,HARSN2
|
||
CAIL A,700
|
||
JRST HAROF
|
||
DPB A,HARPT(L)-1
|
||
JUMPGE L,HARMN5
|
||
AOBJN L,HARSC8
|
||
MOVEI L,0
|
||
JRST HARMN5
|
||
|
||
HARPT: (1100)@HART
|
||
HART: (111100+D)
|
||
(221100)@HART
|
||
(331100)@HART
|
||
|
||
|
||
HAROF: MOVE B,[(700)[ASCII ./OVERFLOW\.]-1]
|
||
PUSHJ P,DOSAY5
|
||
JRST DONE
|
||
|
||
PSNTM1==0
|
||
PSNTM2==0
|
||
PSNTM3==0
|
||
PSNTM4==0
|
||
HARNT: PUSH P,B
|
||
PUSH P,A
|
||
HRRZ A,HARMN
|
||
IDIVI A,12 ;SCALE IT
|
||
MOVE B,TWTABL(B) ;TWELFTH ROOT OF 2
|
||
IMULI B,A ;FULL RANGE
|
||
POP P,A
|
||
IMULI A,B ;RESTORE
|
||
POP P,B
|
||
JRST HARMN2
|
||
|
||
HARWT: PSNTM1
|
||
PSNTM2
|
||
PSNTM3
|
||
PSNTM4
|
||
]
|
||
|
||
COS": FADR A,[1.57079631847]
|
||
SIN": MOVM B,A
|
||
CAMGE B,[.001
|
||
POPJ P,
|
||
FDV B,[1.57079631847
|
||
CAMG B,[1.0
|
||
JRST SINS2
|
||
MULI B,400
|
||
ASH C,-202(B)
|
||
MOVEI B,200
|
||
ROT C,3
|
||
LSHC B,33
|
||
FAD B,[0
|
||
JUMPE C,SINS2
|
||
TLCE C,1000
|
||
FSB B,[1.0
|
||
TLCE C,3000
|
||
TLNN C,3000
|
||
MOVNS B
|
||
|
||
SINS2: SKIPGE A
|
||
MOVNS B
|
||
MOVEM B,A
|
||
FMPR B,B
|
||
MOVE C,[.00015148419
|
||
FMP C,B
|
||
FAD C,[-.00467376557
|
||
FMP C,B
|
||
FAD C,[.07968967928
|
||
FMP C,B
|
||
FAD C,[-.64596371106
|
||
FMP C,B
|
||
FAD C,[1.57079631847
|
||
FMPR A,C
|
||
POPJ P,
|
||
|
||
|
||
XSIN: TLC A,232000
|
||
FAD A,A
|
||
FMP A,[.02454369248
|
||
PUSHJ P,SIN
|
||
FMP A,[2047.0
|
||
MULI A,400
|
||
TSC A,A
|
||
ASH B,-243(A)
|
||
POPJ P, ;RANGE OF B: -2047. TO +2047.
|
||
|
||
ATAN": PUSH P,B
|
||
MOVM B,A
|
||
CAMG B,[145000000000]
|
||
JRST ATANX
|
||
MOVEM A,C2'
|
||
CAML B,A2
|
||
JRST AT4
|
||
PUSH P,C
|
||
MOVSI C,201400
|
||
PUSH P,CMOVNS
|
||
CAMG B,C
|
||
AOSA (P)
|
||
FDVM C, B
|
||
MOVEM B,C3'
|
||
FMP B, B
|
||
MOVE C,KB3
|
||
FAD C, B
|
||
MOVE A,KA3
|
||
FDVM A,C
|
||
FAD C, B
|
||
FAD C,KB2
|
||
MOVE A,KA2
|
||
FDVM A,C
|
||
FAD C,B
|
||
FAD C,KB1
|
||
MOVE A,KA1
|
||
FDV A,C
|
||
FAD A,KB0
|
||
FMP A,C3'
|
||
FSBR A,[200622077325]
|
||
XCT (P)
|
||
FADR A,[200622077325]
|
||
SKIPA C,-1(P)
|
||
AT4: SKIPA A,A3
|
||
SUB P,[2,,2]
|
||
SKIPGE C2'
|
||
CMOVNS: MOVNS A
|
||
ATANX: POP P,B
|
||
POPJ P",
|
||
|
||
A2: 233000000000
|
||
A3: 201622077325
|
||
KB0: 0.1746554388
|
||
KB1: 6.762139240
|
||
KB2: 3.316335425
|
||
KB3: 1.448631538
|
||
KA1: 3.709256262
|
||
KA2: -7.106760045
|
||
KA3: -0.2647686202
|
||
|
||
|
||
;FLOATING POINT SQUARE ROOT FUNCTION
|
||
|
||
SQRT": MOVEM B,BSAV
|
||
MOVMS A
|
||
JUMPLE A,SQ2
|
||
ASHC A,-33
|
||
SUBI A,201
|
||
ROT A,-1
|
||
HRRM A,SQ1
|
||
LSH A,-43
|
||
ASH B,-10
|
||
FSC B,177(A)
|
||
MOVEM B,ST
|
||
FMP B,S1(A)
|
||
FAD B,S2(A)
|
||
MOVE A,ST
|
||
FDV A,B
|
||
FAD B,A
|
||
FSC B,-1
|
||
MOVE A,ST
|
||
FDV A,B
|
||
FADR A,B
|
||
SQ1: FSC A,0
|
||
SQ2: MOVE B,BSAV
|
||
POPJ P",
|
||
|
||
S1: 0.8125
|
||
0.578125
|
||
S2: 0.302734
|
||
0.421875
|
||
|
||
ST: 0
|
||
BSAV: 0
|
||
|
||
|
||
SCWAV: PUSHJ P,TTYON
|
||
MOVEI B,NUMBER
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
MOVE D,A
|
||
MOVEI B,HARMON
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
ADDI A,1
|
||
HRRM A,SCWAVT
|
||
SCWAV1: MOVSI A,-400
|
||
PUSHJ P,UWAIT"
|
||
CONO 4000+APRCHN ;CLK ENBL OFF
|
||
SCWAV2: LDB B,SCWAVT(D)-1
|
||
DPB A,[111100,,B]
|
||
MOVEM B,32
|
||
AOBJN A,SCWAV2
|
||
JRST SCWAV1
|
||
|
||
SCWAVT: 1100,,(A)
|
||
111100,,@SCWAVT
|
||
221100,,@SCWAVT
|
||
331100,,@SCWAVT
|
||
;CRRBK USES A,B,C,E; INITIALIZES N
|
||
|
||
CRRBK: MOVE N,[(2200)SLAK-1
|
||
PUSHJ P,R3B
|
||
JRST .-1
|
||
CAIL A,400000
|
||
JRST SPOPJ
|
||
MOVEM A,CRBSP'
|
||
JRST CRBC
|
||
|
||
CRBLOK: CONO PTR,20
|
||
PUSHJ P,R3B
|
||
JRST .-1
|
||
CAME A,CRBSP
|
||
JRST REALLY
|
||
|
||
CRBC: PUSHJ P,R3B
|
||
JRST CRBLOK
|
||
ADD A,CRBSP
|
||
MOVEM A,CRCKSM'
|
||
SUB A,CRBSP
|
||
SUB A,CRBSP
|
||
CAILE A,0
|
||
CAILE A,100
|
||
JRST 4,CRBLOK
|
||
MOVE C,[(2200)SLAK-1
|
||
MOVEM A,E
|
||
|
||
CRBWD: PUSHJ P,R3B
|
||
JRST CRBLOK
|
||
IDPB A,C
|
||
ADD A,CRCKSM
|
||
CAIL A,-1
|
||
SUBI A,-1
|
||
MOVEM A,CRCKSM
|
||
SOJG E,CRBWD
|
||
|
||
CR1R: PUSHJ P,R3B
|
||
JRST CRBLOK
|
||
CAME A,CRCKSM
|
||
JRST 4,CRBLOK
|
||
POPJ P,
|
||
|
||
R3B: PUSHJ P,R1B
|
||
POPJ P,
|
||
MOVE B,A
|
||
PUSHJ P,R1B
|
||
POPJ P,
|
||
ROT A,-6
|
||
ROTC A,6
|
||
PUSHJ P,R1B
|
||
POPJ P,
|
||
ROT A,-6
|
||
ROTC A,-30.
|
||
JRST SPOPJ
|
||
|
||
R1B: PUSHJ P,RPA
|
||
CAIL A,400
|
||
JRST 4,CPOPJ
|
||
TRZE A,200
|
||
TRZE A,100
|
||
JRST R1B
|
||
SPOPJ: AOS (P)
|
||
CPOPJ: POPJ P,
|
||
|
||
RPA: CONSO PTR,10
|
||
JRST .-1
|
||
DATAI PTR,A
|
||
POPJ P,
|
||
|
||
TYI":
|
||
.IOT 1,A
|
||
POPJ P,
|
||
|
||
CRLFQ: SKIPE BKD'
|
||
POPJ P,
|
||
|
||
CRLF": MOVEI A,15
|
||
PUSHJ P,TYO
|
||
SKIPA A,[12]
|
||
TYO6": ADDI A,40
|
||
TYO":
|
||
.IOT 2,A
|
||
POPJ P,
|
||
|
||
IFE 6V,[
|
||
PSGTR: MOVEM B,PSGTRP'
|
||
MOVE 0,[(SAVAC)1]
|
||
BLT 0,17
|
||
MOVE B,[440700,,[ASCII .
|
||
/STOP \.]]
|
||
SKIPN PSGTRP
|
||
MOVE B,[440700,,[ASCII .
|
||
/VOICE \.]]
|
||
SKIPN PSGTRP
|
||
MOVEM A,PSGTRP
|
||
PUSHJ P,DOSAY5
|
||
MOVE A,PSGTRP
|
||
PUSHJ P,DPT
|
||
MOVE B,[440700,,[ASCII . NOT SPECIFIED/
|
||
\.]]
|
||
JUMPE 0,PSGTR6
|
||
MOVE B,[440700,,[ASCII . HARMONICS\.]]
|
||
PUSHJ P,DOSAY5
|
||
HRRZ C,0
|
||
PUSHJ P,DOSAY6
|
||
MOVE B,[440700,,[ASCII . NOT BUILT/
|
||
\.]]
|
||
PSGTR6: PUSHJ P,DOSAY5
|
||
JRST PLDONE
|
||
|
||
|
||
VOXPT: TDZA G,G ;ASSIGN HST TO VOICE
|
||
VOXCD: MOVEI G,1
|
||
MOVEI B,HARMON
|
||
PUSHJ P,GET
|
||
JRST VOXCD1 ;NOT HST
|
||
|
||
VOXCD2: MOVEI J,1(A)
|
||
PUSHJ P,NUMVLV
|
||
JUMPLE A,BADATA ;NOT NOTHING EITHER
|
||
CAMLE A,VOXSLT(G)
|
||
JRST BADATA
|
||
MOVEM J,@VOXSTT(G)
|
||
JRST DONE
|
||
|
||
VOXCD1: MOVEI B,0
|
||
PUSHJ P,GET
|
||
JRST BADATA
|
||
JRST VOXCD2
|
||
|
||
VOXSTT: PSGTLT(A)-1
|
||
HARCOD(A)-1
|
||
|
||
VOXSLT: 10
|
||
30
|
||
]
|
||
|
||
DPT: JUMPGE A,DPT1
|
||
MOVN B,A
|
||
MOVEI A,"-
|
||
PUSHJ P,TYO
|
||
MOVE A,B
|
||
|
||
DPT1: IDIVI A,10.
|
||
JUMPE A,TYN
|
||
PUSH P,B
|
||
PUSHJ P,DPT
|
||
POP P,B
|
||
|
||
TYN: MOVEI A,60(B)
|
||
JRST TYO
|
||
|
||
TTYON:
|
||
TTYOFF: POPJ P,
|
||
IFN 6V,[
|
||
HARAUG:
|
||
HARSCL:
|
||
HARBLD:
|
||
PLGOA:
|
||
PSGOA:
|
||
PLWHOA:
|
||
VOXPT:
|
||
VOXCD: MOVE B,[440700,,[ASCII ./SORRY, NO PLAYER ROUTINES
|
||
\.]]
|
||
JRST DEATH"
|
||
]
|
||
IFE 6V,[
|
||
;MI PLAYER, ENTER AT PLGOA
|
||
|
||
PSGOA: SKIPA A,[PSGTF]
|
||
PLGOA: MOVEI A,PLWHY1
|
||
HRRM A,PLWHY
|
||
PUSHJ P,CRLFQ
|
||
PUSHJ P,TTYON
|
||
JRST PLGO
|
||
|
||
PLGNP: ADDI H,1
|
||
SKIPGE COML(H)
|
||
JRST PLDNE
|
||
HRRZ A,COML(H)
|
||
HLRZ B,SYMS(A)
|
||
CAIE B,UNSTRU
|
||
JRST NOTSTR
|
||
MOVE B,SYMS(A)
|
||
HRRM B,PLWHRE
|
||
HRRZM B,PSDATL
|
||
SKIPGE PLAYP
|
||
PLWHY: JRST
|
||
PUSHJ P,TUNER
|
||
PLWHYT: .ACCESS 16,[76]
|
||
.IOT 16,A ;SEE IF IT'S TUNED
|
||
AOJN A,PLWHYT
|
||
JRST PLWHY
|
||
|
||
PLWHOA: SKIPL PLAYP
|
||
AOJA H,DO1
|
||
PLWHA1: .ACCESS 16,[77]
|
||
.IOT 16,A
|
||
SOJL A,PLWHA3
|
||
.ACCESS 17,PLWHAT(A)
|
||
.ACCESS 16,PLWHAT(A)
|
||
.IOT 16,D ;SAVE WORD
|
||
MOVE C,[-1,,[JRST 100]]
|
||
.IOT 17,C ;CLOBBER
|
||
PLWHA2: .ACCESS 16,[77]
|
||
.IOT 16,B
|
||
JUMPN B,PLWHA2 ;WAIT UNTIL STOPPED
|
||
MOVE C,[-1,,D]
|
||
.ACCESS 17,PLWHAT(A)
|
||
.IOT 17,C ;RESTORE
|
||
PLWHA3: AOJA H,DO1
|
||
|
||
PLWHAT: PLAY1 ;MI
|
||
PLAY2 ;DAC
|
||
|
||
PLWHY1: MOVEI 0,0
|
||
.ACCESS 17,[MUSDAT]
|
||
PLWHRE: HLRZ B,
|
||
AOS PLWHRE
|
||
HRRZ A,PLWHRE
|
||
SUBI A,(B)
|
||
HRL A,A
|
||
HRR A,PLWHRE
|
||
.IOT 17,A
|
||
.ACCESS 17,[77]
|
||
MOVE A,[-1,,[1]]
|
||
.IOT 17,A
|
||
.ACCESS 17,[76]
|
||
MOVE A,[-1,,[1]]
|
||
.IOT 17,A
|
||
PLDONE:
|
||
PLGO: PUSHJ P,NUMVAL
|
||
PLLCT: SOJL A,PLGNP ;YAWN
|
||
.RD710 A
|
||
ADDI A,700000
|
||
.RD710 B
|
||
CAMGE B,A
|
||
JRST .-2
|
||
JRST PLLCT
|
||
|
||
PLDNE: JRST DONE
|
||
NOTSTR: MOVE B,[440700,,[ASCIZ ./UNSTRUCTURED MUSIC ONLY\.]]
|
||
PUSHJ P,DOSAY5
|
||
JRST BADATA
|
||
]
|
||
|
||
IFN 6V,[
|
||
TUNEUP:
|
||
DETUNE: MOVE B,[440700,,[ASCII ./SORRY, NO PLAYER ROUTINES
|
||
\.]]
|
||
JRST DEATH"
|
||
]
|
||
IFE 6V,[
|
||
TUNEUP: SKIPA A,[440.]
|
||
DETUNE: PUSHJ P,NUMVAL
|
||
MOVEM A,TUNVAL'
|
||
TLC A,232000
|
||
FAD A,A
|
||
MOVE C,A
|
||
FMPR A,[.OP FDVR 52944.0 440.0]
|
||
MULI A,400
|
||
TSC A,A
|
||
ASH B,-243(A)
|
||
FMPR C,[.OP FDVR 6442450994.0 440.0]
|
||
MULI C,400
|
||
TSC C,C
|
||
ASH D,-243(C)
|
||
MOVEM D,PDP6P+1
|
||
|
||
TUNE1: MOVEM B,PDP6P
|
||
TUNER: .SUSET [.RUNAME,,A]
|
||
MOVEM A,PDP6B+1
|
||
MOVEM A,PDP6C+1
|
||
.OPEN 17,PDP6B
|
||
JRST NOPDP6
|
||
.RESET 17, ;CLEAR CORE
|
||
.ACCESS 17,[73]
|
||
MOVE A,PDP6P1
|
||
.IOT 17,A ;LOAD PROGRAM
|
||
.ACCESS 17,[37]
|
||
MOVE A,PDP6P2
|
||
.IOT 17,A ;SET IT GOING
|
||
.OPEN 16,PDP6C
|
||
JRST NOPDP6
|
||
SETOM PLAYP
|
||
MOVNI A,100
|
||
PDOP1: .ACCESS 16,[37]
|
||
.IOT 16,B
|
||
AOJE B,PDOP2
|
||
AOJL A,PDOP1
|
||
MOVE B,[440700,,[ASCII .
|
||
/PLEASE START THE PDP-6 AT 100
|
||
\.]]
|
||
PUSHJ P,DOSAY5
|
||
PDOP2: POPJ P,
|
||
|
||
NOPDP6: MOVE B,[440700,,[ASCII ./CAN'T GET PDP-6
|
||
\.]]
|
||
JRST DEATH"
|
||
|
||
PDP6B: 3,,(SIXBIT /USR/)
|
||
0
|
||
SIXBIT /PDP6/
|
||
PDP6C: (SIXBIT /USR/)
|
||
0
|
||
SIXBIT /PDP6/
|
||
|
||
PDP6P1: PDP6P-PDP6PE,,PDP6P
|
||
PDP6P2: -3,,.+1
|
||
1
|
||
0
|
||
JRST 100
|
||
|
||
CONSTANTS
|
||
VARIABLES
|
||
|
||
|
||
PDP6P: OFFSET 73-.
|
||
PLRCM: 0
|
||
PLRS9: 0
|
||
0
|
||
0 ;76: 0 UNTUNED, -1 WAITING, 1 TO GO
|
||
0 ;77: 0 INITIALLY, 1 TO PLAY MI, 2 TO PLAY DAC
|
||
PGO: SETZM 77 ;100
|
||
SETZM 37
|
||
PLD: SKIPGE A,76
|
||
JRST PLD
|
||
JUMPE A,PLD1
|
||
MOVE A,77
|
||
JRST @PLDT(A)
|
||
PLDT: PLD1
|
||
PLMI
|
||
PLSC
|
||
|
||
PLD1: CONO PI,11577
|
||
CONO 200000
|
||
MOVE A,[JSR PLRC1]
|
||
MOVEM A,42
|
||
SETZM PLTAB
|
||
SETZM PLTAB+1
|
||
SETZM PSTB4
|
||
SETZM PSTB4+1
|
||
MOVSI 15,400000
|
||
MOVNI 14,60.
|
||
CONO PI,12300
|
||
CONO 1000
|
||
CONSO 1000
|
||
JRST .-1
|
||
CONO 1000
|
||
CONO 2001
|
||
JRST PLAY
|
||
|
||
PLRC1: 0
|
||
CONO 1001
|
||
AOJGE 14,PLRC2
|
||
JRST 12,@PLRC1
|
||
|
||
;INCREMENT TABLES, BUILT BY TUNEUP
|
||
|
||
|
||
PSTB1: BLOCK 100
|
||
PSTB2: BLOCK 100
|
||
PSTB3: BLOCK 100
|
||
PSTB4: BLOCK 77
|
||
PSTBT: BLOCK 1
|
||
|
||
PSTBX=PSTBT-14
|
||
|
||
PSTBE:
|
||
|
||
PLRC2: CONO PI,11577
|
||
HRRZ A,PLRC1
|
||
SUBI A,PLAY
|
||
TLZ 15,400000
|
||
IMULI 15,31 ;PLAY LOOP
|
||
ADD A,15
|
||
MOVEI C,0
|
||
MOVS D,PLRCM
|
||
DIV C,A
|
||
MOVEI A,PLTABX
|
||
MOVE P,PP
|
||
MOVEI F,PLTAB
|
||
MOVEI G,PLBOT
|
||
PUSHJ P,PLRCE
|
||
|
||
PLRS: CONO 200000
|
||
MOVE A,[JSR PLRS1]
|
||
MOVEM A,44
|
||
MOVEI A,[(400000)]-1
|
||
MOVEM A,PSDATL
|
||
MOVEI A,1
|
||
EXCH A,PSTEMP
|
||
MOVEM A,PLPSTP'
|
||
MOVNI A,60.
|
||
MOVEM A,PLRS0'
|
||
CONO PI,12240
|
||
CONO 1000
|
||
CONSO 1000
|
||
JRST .-1
|
||
CONO 3002
|
||
JRST PSGTF
|
||
|
||
PLRS1: 0
|
||
CONO 1002
|
||
AOSGE PLRS0'
|
||
JRST 12,@PLRS1
|
||
CONO PI,11577
|
||
HRRZ A,PLRS1
|
||
CAIL A,PSGTT3
|
||
SUBI A,PSGTT3-27
|
||
SUBI A,7
|
||
TLZ 0,400000
|
||
IMULI 0,16
|
||
ADD A,0
|
||
MOVEI C,0
|
||
MOVE D,PLRS9
|
||
ASHC C,3
|
||
DIV C,A
|
||
MOVEI A,PSTBX
|
||
MOVE P,PP
|
||
MOVEI F,PSTB4
|
||
MOVEI G,PSTB1
|
||
PUSHJ P,PLRCE
|
||
MOVE A,PLPSTP
|
||
MOVEM A,PSTEMP
|
||
SETOM 76
|
||
JRST 100
|
||
|
||
|
||
|
||
PLRCE: MOVE B,C
|
||
|
||
PLRC3: HRRM A,PLRC4
|
||
MOVEI E,13
|
||
|
||
PLRC4: MOVEM C,(E)
|
||
MUL C,[(361503)374705]
|
||
SOJGE E,.-2
|
||
ASH B,-1
|
||
MOVE C,B
|
||
SUBI A,14
|
||
CAML A,F
|
||
JRST PLRC3
|
||
|
||
PLRC5: MOVEM C,13(A)
|
||
MOVEI A,-2(F)
|
||
MOVE C,100(A)
|
||
MUL C,DTC
|
||
MOVEM C,(A)
|
||
CAMLE A,G
|
||
SOJA A,.-4
|
||
POPJ P,
|
||
|
||
DTC: (377200)
|
||
|
||
DEFINE PART N
|
||
P!N: ADDI N,
|
||
III==1_<6-N>
|
||
TLNE N,1
|
||
TROA III
|
||
TRZ III
|
||
TERMIN
|
||
|
||
|
||
PLMI: SETOM 76
|
||
MOVEI 0,0
|
||
MOVEI 17,MUSDAT
|
||
JRST PLGT
|
||
|
||
PLOFF: ASH 15,-7
|
||
HLLZS @PLACC(15)
|
||
PLGT: HLLE 15,(17) ;GET DURATION
|
||
IDIV 15,PLTEMP
|
||
JUMPE 15,PLGE
|
||
|
||
PLAY: REPEAT 6,PART \.RPCNT+1
|
||
PLAY1: MOVEM 32 ;MI ON 32 ALSO
|
||
AOJL 15,PLAY
|
||
|
||
PLGE: HRRZ 15,(17) ;NOTE
|
||
JUMPE 15,PGO ;DONE?
|
||
TRZN 15,EVENON ;BEG OF CHORD?
|
||
AOJA 17,PLOFF
|
||
ANDCMI 15,374000
|
||
IDIVI 15,200
|
||
MOVE 14,@PLGET(15)
|
||
HRRM 14,@PLACC(15)
|
||
AOJA 17,PLGT
|
||
]
|
||
IFE 6V,[
|
||
PLTEMP: 200000
|
||
|
||
|
||
PLACC: P1
|
||
P2
|
||
P3
|
||
P4
|
||
P5
|
||
P6
|
||
P1
|
||
P2
|
||
|
||
PLGET: PLTB1(16)+1 ;POINTERS TO FREQ TABLE
|
||
PLTB2(16)+1
|
||
PLTB3(16)+1
|
||
PLTB4(16)+1
|
||
PLTB5(16)+1
|
||
PLTB6(16)+1
|
||
PLTB1(16)+1
|
||
PLTB2(16)+1
|
||
|
||
|
||
PLBOT: BLOCK 500
|
||
PLTAB: BLOCK 77
|
||
PLTABT: BLOCK 1
|
||
PLTABX=PLTABT-14
|
||
PLTB1=PLBOT
|
||
PLTB2=PLTB1+100
|
||
PLTB3=PLTB2+100
|
||
PLTB4=PLTB3+100
|
||
PLTB5=PLTB4+100
|
||
PLTB6=PLTB5+100
|
||
|
||
|
||
PSGTF: MOVE 0,[(PSGTT)7]
|
||
BLT 0,17
|
||
MOVE 0,[(PSGTTL)PSGTT3]
|
||
BLT 0,PSGCCF
|
||
MOVE A,PSGTLT
|
||
HRRM A,PSGTT1-R
|
||
MOVE A,PSGTLT+1
|
||
HRRM A,PSGTT2-R
|
||
MOVE A,PSGTLT+2
|
||
HRRM A,PSGTT3
|
||
MOVE A,PSGTLT+3
|
||
HRRM A,PSGTT4
|
||
JRST PSGT
|
||
|
||
PSTEMP: 200000
|
||
|
||
PSGTT: ADDI C,0
|
||
LDB B,PSGCCC
|
||
PSGTT1: MOVE A,(B)
|
||
ADDI D,0
|
||
LDB B,PSGCCD
|
||
PSGTT2: ADD A,(B)
|
||
ADDI E,0
|
||
LDB B,PSGCCE
|
||
JRST PSGTT3 ;17
|
||
PSGTTL:
|
||
PSGTT3: ADD A,(B)
|
||
ADDI F,0
|
||
LDB B,PSGCCF
|
||
PSGTT4: ADD A,(B)
|
||
PLAY2: MOVEM A,32
|
||
AOJL 0,7
|
||
|
||
PSGTB: HRRZ A,@PSDATL
|
||
TRZE A,EVENON+374000
|
||
JRST PSGTA
|
||
JUMPE A,PGO
|
||
PSOFF: ASH A,-7
|
||
HLLZS @PSPT(A)
|
||
PSGT: AOS A,PSDATL
|
||
HLLE 0,(A)
|
||
IDIV 0,PSTEMP
|
||
XCT 7
|
||
XCT 12
|
||
XCT 15
|
||
XCT PSGTT3+1
|
||
JUMPN 0,7
|
||
JRST PSGTB
|
||
|
||
PSGTA: IDIVI A,200
|
||
MOVE 0,@PSGTAT(A)
|
||
HRRM 0,@PSPT(A)
|
||
LDB B,[130600,,@PSDATL]
|
||
MOVE 0,@PSGY(B)
|
||
JUMPLE 0,PSGTR
|
||
HRRM 0,@PSGTTT(A)
|
||
XCT 7
|
||
XCT 12
|
||
XCT 15
|
||
XCT PSGTT3+1
|
||
JRST PSGT
|
||
|
||
;32 IS D-A LOC
|
||
|
||
R==PSGTT-7
|
||
|
||
PSPT: 7
|
||
12
|
||
15
|
||
PSGTT3+1
|
||
7
|
||
12
|
||
15
|
||
PSGTT3+1
|
||
|
||
PSGY: PSGTLT(A)
|
||
REPEAT 30,HARCOD(B)-1
|
||
|
||
PSGTAT: PSTB1(B)+1
|
||
PSTB2(B)+1
|
||
PSTB3(B)+1
|
||
PSTB4(B)+1
|
||
PSTB1(B)+1
|
||
PSTB2(B)+1
|
||
PSTB3(B)+1
|
||
PSTB4(B)+1
|
||
|
||
PSGTTT: PSGTT1-R
|
||
PSGTT2-R
|
||
PSGTT3
|
||
PSGTT4
|
||
PSGTT1-R
|
||
PSGTT2-R
|
||
PSGTT3
|
||
PSGTTE: PSGTT4
|
||
PSGCCC: 121000,,C
|
||
PSGCCD: 121000,,D
|
||
PSGCCE: 121000,,E
|
||
PSGCCF: 121000,,F
|
||
|
||
CONSTANTS
|
||
VARIABLES
|
||
PP: -10,,PPBK-1
|
||
PPBK: BLOCK 10
|
||
|
||
PSDATL: 0
|
||
PSGTLT: BLOCK 10
|
||
HARCOD: BLOCK 30
|
||
HARCDE:
|
||
MUSDAT: OFFSET 0 ;-DURATION,,EVENON+VOICE*200+PTR TO FREQ?
|
||
PDP6PE:
|
||
]
|
||
|
||
SYMTAB: SIXBIT /0 1 2 3 4 5 6 7 8 9 ZERO ONE TWO THREE FOUR FIVE/
|
||
SIXBIT / SIX SEVEN EIGHT NINE C D E F G A B ST ND RD TH /
|
||
SIXBIT /DETEMPO - MINUS SOPRANO ALTO TENOR B/
|
||
SIXBIT /ASS FORGET ALL EXCEPT READOLD TUNEUP TEMPO PLOLD/
|
||
SIXBIT / VALUE K M THOUSAND MILLION MENTION ENTITLE ENTE/
|
||
SIXBIT /R TAPES READ WRITE [ ] = PLSCOPE , : ; BUILD BUI/
|
||
SIXBIT /LDON JRST MELGEN KEYBOARD TUNING FROM TO TRANSLA/
|
||
SIXBIT !TE PLEASE SCRIPT SCRIPTSIZE VOLBUILD # READNEW V!
|
||
SIXBIT /OICE STOP ++ VIEWWAVE INTREAD SCRIPTSPACE SCRIPT/
|
||
SIXBIT /MNINT AGAIN * ** ^ SLURDENS ARDS TREBLE SCRIPTCL/
|
||
SIXBIT /EF ? NOPLAY WHOA SCLBUILD PRINT SYN SYNONYM /
|
||
BLOCK SYMTAB-.+SYTLL
|
||
SYTEND:
|
||
|
||
SYMS: REPEAT 2,[ZZZ=0
|
||
REPEAT 10.,[(NUMBER)ZZZ
|
||
ZZZ=ZZZ+1
|
||
]]
|
||
REPEAT 7,[(TONUS)ZZZ-10.
|
||
ZZZ=ZZZ+1
|
||
]
|
||
REPEAT 4,(ORDFLG)
|
||
(PARAM)3
|
||
(MINUS)
|
||
(MINUS)
|
||
(CLEF)7
|
||
(CLEF)6
|
||
(CLEF)5
|
||
(CLEF)4
|
||
(ERASER)0
|
||
MODALL
|
||
MODEXC
|
||
(CREATE)0
|
||
(GOTO)0
|
||
(PARAM)4
|
||
(PLAYER)0
|
||
(GOTO)1
|
||
(MULTIP)MULTAB
|
||
(MULTIP)MULTAB+1
|
||
(MULTIP)MULTAB
|
||
(MULTIP)MULTAB+1
|
||
(ERASER)1
|
||
(GOTO)2
|
||
|
||
|
||
(GOTO)3
|
||
(GOTO)4
|
||
(CREATE)1
|
||
(GOTO)5
|
||
(BRAKET)0
|
||
(BRAKET)1
|
||
(GOTO)6
|
||
(PLAYER)1
|
||
PUNCCM
|
||
PUNCCL
|
||
PUNCSC
|
||
(GOTO)7
|
||
(GOTO)10
|
||
(GOTO)11
|
||
(CREATE)2
|
||
(CREATE)3
|
||
(GOTO)12
|
||
PUNCFM
|
||
PUNCTO
|
||
(TRANSL)0
|
||
MODPLS
|
||
(SCRIB)0
|
||
(PARAM)5
|
||
(GOTO)13
|
||
PUNCSL
|
||
(CREATE)4
|
||
(GOTO)14
|
||
(GOTO)15
|
||
(CREATE)5
|
||
(GOTO)16
|
||
(CREATE)6
|
||
(PARAM)1
|
||
(PARAM)2
|
||
MODAGN
|
||
(STAR)0
|
||
(STAR)1
|
||
(STAR)2
|
||
(PARAM)6
|
||
(PARAM)7
|
||
(CLEF)2
|
||
(GOTO)17
|
||
(CLEF),-1
|
||
(GOTO)20
|
||
(GOTO)21
|
||
(GOTO)22
|
||
(GOTO)23
|
||
(GOTO)24
|
||
(GOTO)24
|
||
BLOCK SYMS-.+SYMLL
|
||
|
||
TWTABL: BLOCK 12 ;ROOTS OF 2
|
||
0
|
||
DONEW: DONE ;USED BY PC HACKS
|
||
PLSC: .VALUE
|
||
JRST DONE
|
||
|
||
0
|
||
STRING: BLOCK STRLL
|
||
0
|
||
SLAK: BLOCK SLAKLL
|
||
COML: BLOCK COMLL
|
||
COMSL: BLOCK COMLL
|
||
TEMPF: BLOCK NLINES
|
||
LOCA: BLOCK NLINES
|
||
MEAS: BLOCK NLINES
|
||
MSTM: BLOCK NLINES
|
||
ALIVE: BLOCK ALIVEL
|
||
PDLSE: LOSE
|
||
PDL": BLOCK PDLL
|
||
XPDL: BLOCK XPDLL
|
||
YPDL: BLOCK YPDLL
|
||
TITL: 0
|
||
BLOCK TITLL-1
|
||
|
||
TAPTAB: 0
|
||
BLOCK NDIR-1
|
||
|
||
PLWN: BLOCK NRNO
|
||
SAVAC: BLOCK 17
|
||
|
||
PATCH": BLOCK 100
|
||
|
||
MULTAB: 1000
|
||
1000000
|
||
1000.
|
||
1000000.
|
||
|
||
TYPE: -1
|
||
0 ;!
|
||
-1 ;"
|
||
-1 ;#
|
||
0 ;$
|
||
0 ;%
|
||
0 ;&
|
||
-1 ;'
|
||
-1 ;(
|
||
-1 ;)
|
||
1 ;*
|
||
1 ;+
|
||
-1 ;,
|
||
-1 ;-
|
||
0 ;.
|
||
-1 ;/
|
||
-1 ;0
|
||
-1 ;1
|
||
-1 ;2
|
||
-1 ;3
|
||
-1 ;4
|
||
-1 ;5
|
||
-1 ;6
|
||
-1 ;7
|
||
-1 ;8
|
||
-1 ;9
|
||
-1 ;:
|
||
-1 ;;
|
||
-1 ;<
|
||
1 ;=
|
||
-1 ;>
|
||
-1 ;?
|
||
-1 ;@
|
||
0 ;A
|
||
0 ;B
|
||
0 ;C
|
||
0 ;D
|
||
0 ;E
|
||
0 ;F
|
||
0 ;G
|
||
0 ;H
|
||
0 ;I
|
||
0 ;J
|
||
0 ;K
|
||
0 ;L
|
||
0 ;M
|
||
0 ;N
|
||
0 ;O
|
||
0 ;P
|
||
0 ;Q
|
||
0 ;R
|
||
0 ;S
|
||
0 ;T
|
||
0 ;U
|
||
0 ;V
|
||
0 ;W
|
||
0 ;X
|
||
0 ;Y
|
||
0 ;Z
|
||
-1 ;[
|
||
-1 ;\
|
||
-1 ;]
|
||
1 ;^
|
||
1 ;_
|
||
|
||
|
||
VARIAB
|
||
CONSTA
|
||
FREE":
|
||
LOC FRETOP
|
||
FREEND":
|
||
|
||
|
||
DEFINE MESS A,B
|
||
PRINTX ?A!B
|
||
?
|
||
TERMIN
|
||
|
||
IF2,MESS [LENGTH OF FREE STORAGE = ]\FREEND-FREE
|
||
|
||
|
||
END SETUPX
|
||
|