/MUSIC TRANSLATOR 10022/ JMP BEGIN /READER READING PROGRAM /READ ABOUT 100 CHARS INTO BUFFER AT ONE TIME /WILL BE CALLED FOR ON CHARACTER BY CHARACTER BASIS /INTERRUPTS ARE OFF RDRA, 0 LAC RDRP AND (17777) SAD (RDRE) JMS RDRI LAC I RDRP ISZ RDRP SAD (223) /END OF TAPE CODE JMP BEGIN EXIT RDRA /THE READER BUFFER RDRP, RDRE RDRBUF, 0 RDRBUF+140/ RDRE, 0 /THE INITIALIZATION PART RDRI, 0 LAW RDRBUF DAC RDRP RDRIM, LAW DAC TIMEE RSA RSF /SKIP ON READER FLAG SKP JMP .+4 ISZ TIMEE /ELSE ADD UP THE TIME JMP .-4 /NOT UP YET JMP RDRF /THE READER TIMED OUT RRB /GET THE CHAR DAC I RDRP ISZ RDRP LAC RDRP AND (17777) SAD (RDRE) SKP JMP RDRIM /THE BUFFER IS FULL - RESET 'RDRP' AND EXIT RDRFF, LAW RDRBUF DAC RDRP EXIT RDRI /READER TIME OUT - INSERT END-OF-TAPE CODE /AND EXIT RDRF, RRB /CANCEL READER SELECT LAC (223) /END OF TAPE CODE DAC I RDRP JMP RDRFF PCHA, 0 DAC FFGHI LAS SPA EXIT PCHA /SUPPRESS PUNCH IF SW 0 UP LAC FFGHI PLS PSF JMP .-1 JMP I PCHA PCHB, 0 DAC FFGH LRS 14 AND (77) TAD (200) JMS PCHA LAC FFGH LRS 6 AND (77) TAD (200) JMS PCHA LAC FFGH AND (77) TAD (200) JMS PCHA JMP I PCHB TLPA, 0 TLS TSF JMP .-1 JMP I TLPA FFGH, 0 FFGHI, 0 /MUSIC TRANSLATOR /READ AND CHECK FOR CERTAIN BREAK CHARACTERS /SOME ARE IGNORED, E.G. CR, LF, TAB /OTHERS CAUSE RETURN AT ENTERY+1, E.G. COMMA,# /ALL OTHERS CAUSE RETURN AT ENTRY +2 C = RDRA BREAK, 0 JMS C SAD (250) /LPAREN JMP BREAK+1 SAD (251) /RPAREN JMP BRET SAD (215) /CR JMP BRCR SAD (212) /LF JMP BREAK+1 SAD (257) /SLASH JMP BRET SAD (254) /COMMA JMP BRET SAD (240) /SPACE JMP BREAK+1 SAD (211) /TAB JMP BREAK+1 SAD (0) /BLANK TAPE - AS BETWEEN PAGES JMP BREAK+1 SAD (214) /FORM-FEED - END OF PAGE JMP BREAK+1 SAD (243) /# I.E. COMMAND JMP BRET ISZ BREAK BRET, JMP I BREAK BRCR, ISZ PCC JMP BREAK+1 /A NOT TOO SURPRIZING DEFINITION: EXIT = JMP I /THIS ROUTINE SETS UP THE NEXT GROUP OF THREE /CHARACTERS FOR PROCESSING. CHARACTERS ARE READ UNTIL /A BREAK CHAR IS FOUND, BEING SAVED IN C1,C2,C3. /MORE THAN THREE MEANS AN ERROR. LESS THAN THREE CAUSES /LAST ONE OR TWO TO BE SET TO ZERO. /RETURN IS WITH THE TERMINATING BREAK CHARACTER IN THE /ACCUMULATOR. SETUP, 0 JMS BREAK JMP E1 DAC C1 JMS BREAK JMP F2 DAC C2 JMS BREAK JMP F3 DAC C3 JMS BREAK JMP I SETUP JMP E3 F2, DZM C2 F3, DZM C3 JMP I SETUP C1, 0 C2, 0 C3, 0 TIME, 0 JMS SETUP SAD (257) /SLASH JMP MEAS /SAVE THE MEASURE NUMBER SAD (243) /CHECK FOR # JMP CMMD /A COMMAND (TEMPO,KEY,END) LAC C3 SAD (304) /D (IMPLIES END OF TRANSLATION) JMP ENDUP LAC C1 CLQ LLS 11 TAD C2 JMS SEARCH TTAB TTRA JMS PCHB JMP I TIME ENDUP, LAC (-300) DAC C1 CLA JMS PCHB /ZERO FOR END OF PEICE CLA JMS PCHA ISZ C1 JMP .-3 JMP BEGIN /THE COMMAND IDENTIFIER (SUCH AS IT IS...) CMMD, LAC C1 SAD (313) /K FOR NEW KEY SIGNATURE JMP MORE LAC C3 SAD (304) /D FOR END JMP ENDUP /ELSE TRANSLATE C1,C2,C3 AS DECIMAL NUMBER AND PUT OUT /TEMPO COMMAND TO PLAYER JMS INNUM DAC D2 CLL LAC CONST2 IDIV /DIVIDE INTO SCALE FACTOR D2, 0 LACQ CMA /USE THE ONES COMPLEMENT JMS PCHB JMP TIME+1 MEAS, JMS INNUM DAC MEA DZM PCC /COUNT OF THE NUMBER OF LINES SINCE LAST  /MEASURE INDICATION JMP TIME+1 DECIMAL CONST2, 119056 OCTAL NOTE, 0 JMS SETUP LAC C1 SAD (322) /TEST FOR REST - R JMP REST LAC C1 CMA TAD (260) CMA DAC C1 JMS CHECKN LAC C2 JMS CHECKP LAC C3 JMS CHECKM LAC C3 SNA JMS KEY SAD (316) /N CLA DAC C3 LAC C2 CLQ LLS 11 TAD C3 JMS SEARCH PITCH PTRA DAC T LAC (-7+1) TAD C1 DAC C1 LAC T RAR!CLL ISZ C1 JMP .-2 JMS CONVRT JMS PCHB JMP I NOTE REST, LAC CONST JMS PCHB JMP I NOTE CHECKP, 0 CMA TAD (301) CMA SPA JMP E5 CMA TAD (7) CMA SMA JMP E5 JMP I CHECKP CHECKN, 0 SNZ JMP E4 CMA TAD (7) /7 BASE 10 CMA SMA JMP E4 JMP I CHECKN INNUM, 0 DZM MEASN LAC C1 SZA JMS DIGIT LAC C2 SZA JMS DIGIT LAC C3 SZA JMS DIGIT LAC MEASN EXIT INNUM CHECKM, 0 SAD (0) JMP I CHECKM SAD (253) JMP I CHECKM SAD (255) JMP I CHECKM SAD (316) JMP I CHECKM JMP E6 CONVRT, 0 DAC D CLL LAC CONST IDIV D, 0 LACQ JMP I CONVRT DECIMAL CONST, 95238 OCTAL KEY, 0 LAC C2 CLQ LLS 11 JMS SEARCH KEYTAB KEYTRA AND (777) JMP I KEY SEARCH, 0 DAC PAT LAC I SEARCH DAC TAB DAC TABB LAC I TAB DAC TABEND LAC PAT DAC I TABEND ISZ TAB LAC I TAB SAD PAT SKP JMP .-4 LAC TAB SAD TABEND JMP E2 /NOT IN TABLE - ERROR LAC TAB CMA TAD TABB CMA ISZ SEARCH TAD I SEARCH DAC T LAC I T ISZ SEARCH JMP I SEARCH TAB, 0 TABB, 0 TABEND, 0 PAT, 0 T, 0 CHECK, 0 BEGIN, HLT JMS C SAD (242) /QUOTE SKP JMP .-3 BLOOP, JMS C DAC C SAD (242) /QUOTE JMP SPAC JMS TAPTTL LAC C JMS TLPA /PRINT OUT TITLE JMP BLOOP /SPACER ON TAPE SPAC, LAW 17760 DAC PC CLA JMS PCHA ISZ PC JMP .-3 /READ AND SAVE THE KEY SIGNATURE MORE, NOP JMS SETUP DAC CHECK LAC C1 JMS CHECKP LAC C2 JMS CHECKM CLQ LAC C1 LLS 11 JMS SEARCH KEYTAB KEYTRA CLQ LAC C1 LLS 11 TAD C2 DAC I T LAC CHECK SAD (251) /RPAREN SKP JMP MORE /PROCESS CHORDS M, DZM PC JMS TIME ISZ PC JMS NOTE ISZ PC JMS NOTE ISZ PC JMS NOTE ISZ PC JMS NOTE JMP M DIGIT, 0 CMA TAD (260) CMA DAC T LAC MEASN CLL MUL 12 LACQ TAD T DAC MEASN JMP I DIGIT PITCH, PITCHE 303255 /C- 303000 /CN 303253 /C+ 304255 /D- 304000 /DN 304253 /D+ 305255 /E- 305000 /E 305253 /E+ 306255 /F- 306000 /FN 306253 /F+ 307255 /G 307000 /GN 307253 /G+ 301255 /A- 301000 /AN 301253 /A+ 302255 /B- 302000 /BN 302253 /B+ 322000 /R PITCHE, 0 DECIMAL PTRA, PTRAE 1920 2048 /C 2183 2183 2304 /D 2446 2446 2560 /E 2730 2560 2730 /F 2910 2910 3072 /G 3275 3275 3413 /A 3638 3638 3840 /B 4096 PTRAE, 0 OCTAL KEYTAB, KTBE 303000 /C 304000 /D 305000 /E 306000 /F 307000 /G 301000 /A 302000 /B 303000 /C KTBE, 0 KEYTRA, KTRE 0 0 0 0 0 0 0 0 KTRE, 0 OCTAL TTAB, TTABE 327000 /W 304327 /DW 327324 /WT 310000 /H 304310 /DH 310324 /HT 321000 /Q 304321 /DQ 321324 /QT 305000 /E 304305 /DE 305324 /ET 323000 /S 304323 /DS 323324 /ST 324000 /T 304324 /DT 324324 /TT 266000 /6 266324 /6T TTABE, 0 DECIMAL TTRA, TTRAE 192 288 128 96 144 64 48 62 32 24 36 16 12 18 8 6 9 4 3 2 TTRAE, 0 /TAPE LABELING PACKAGE PCH = PCHA OCTAL TAPTTL, 0 DAC TAPT SAD (240 JMP TAPBLK TAD (777506 SPA JMP TAPNUM TAD (777772 DAC TAPT TAD (777745 SMA JMP I TAPTTL TAD (32 SPA JMP I TAPTTL LAC TAPT CLL!RAL TAD (TAPTBL-1 DAC TAPTBL JMP TAPCH TAPNUM, LAC TAPT TAD (777520 SPA JMP I TAPTTL LAC TAPT AND (17 DAC TAPT CLL!RAL TAD (TAPTBL+65 JMP TAPNUM-2 TAPBLK, LAC (TAPBK JMP TAPNUM-2 TAPCH, DAC TAPPS LAC I TAPTBL RAL RTL RTL RTL DAC I TAPTBL AND (77 JMS PCH LAC I TAPTBL RTL RTL RTL DAC I TAPTBL AND (77 JMS PCH LAC I TAPTBL RTL RTL RTL DAC I TAPTBL AND (77 JMS PCH LAC TAPPS SNA!CLA JMP I TAPTTL ISZ TAPTBL JMP TAPCH TAPT, 0 TAPPS, 0 TAPTBL, 0 761111 117600 774545 453200 364141 412200 774141 413600 774545 414100 770505 010100 364151 513000 771010 107700 004177 410000 204040 403700 771014 224100 774040 404000 770214 027700 770214 207700 364141 413600 771111 110600 364151 215600 771111 314600 224545 453000 010177 010100 374040 403700 073060 300700 376014 603700 412214 224100 010274 020100 615141 454300 364141 413600 004277 400000 625151 514600 224145 453200 141211 771000 274545 453100 364545 453000 010171 050300 324545 453200 065151 513600 TAPBK, 0 0 /THE ERROR DIAGNOSTICS E1, JMS LINE 1 E2, JMS LINE 2 E3, JMS LINE 3 E4, JMS LINE 4 E5, JMS LINE 5 E6, JMS LINE 6 /THE PRINT OUT OF ERRORS / /OUTPUT CONSISTS OF / 1. MOST RECENT MEASURE NUMBER FOUND IN TEXT / 2. LINE NUMBER WITHIN THAT MEASURE / 3. ERROR TYPE, I.E. 'E1' ... 'E6' / 4. THE REMAINDER (UNPROCESSED) PART OF THE CHORD LINE, 0 LAW 215 JMS TLPA LAW 212 JMS TLPA LAC MEA JMS NUM LAW 253 /+ JMS TLPA LAC PCC JMS NUM LAW 240 JMS TLPA LAW 305 JMS TLPA LAC I LINE TAD (260) JMS TLPA LAW 240 JMS TLPA LAW 240 JMS TLPA JMS RDRA SAD (212) SKP JMP .-4 /FIND THE BEGINNING OF THE NEXT CHORD /FILL IN SQUEALL IN CURRENT CHORD TO / 1. MAINTAIN PHASE RELATIONSHIP / 2. EASILY IDENTIFY TROUBLE SPOT IN MUSIC PHASE, LAC (77) JMS PCHB ISZ PC LAC (5) SAD PC SKP JMP PHASE ISZ PCC JMP M ZQB, 0 /THE NUMBER PRINTER /WILL PRINT UP TO THREE DIGIT INTEGERS IN DECIMAL NUM, 0 DAC ZQB CLL IDIV DECIMAL 100 DAC ZQB /THE REMAINDER LACQ OCTAL TAD (260) JMS TLPA LAC ZQB CLL IDIV DECIMAL 10 DAC ZQB /REMAINDER - THE UNITS PART OCTAL LACQ TAD (260) /THE TENS PART JMS TLPA LAC ZQB TAD (260) JMS TLPA JMP I NUM START BEGIN