/ *** OS/8 MUSIC INPUT PROGRAM *** \ /BY JOHN YOUNG 18-JUN-76 / /THIS VERSION WILL EXECUTE UNDER TSS/8 ONLY!!! *0000 CLA CLL TAD RESTRT SRA UND CDC JMP I .+1 INIT *0010 AUX0, 0 AUX1, 0 *0020 RESTRT, .+1 HLT CDC= JMS I . CD0 /COMMAND DECODER GETCHR= JMS I . GET0 NUMBIN= JMS I . NUM0 N67, -67 P7, 7 P77, 77 P400, 400 N400, -400 N5, -5 P7400, 7400 N200, -200 P177, 177 IPOINT, 0 IBUFF, 3777 IBCNT, 0 P14, -14 NOTSUM, 0 OCT, 0 CHAR, 0 OBUFF, 7377 OBCNT, 0 CGETHL, 0 NOTSTK, NOTST0-1 WFDT, .+1 -1 1 0 0 -400 0 RFDT, .+1 -1 0 0 0 -400 0 EXTBLK, .+1 1 1 DELSTK, . -",+200 FRSTHF -15 BLDWRD -"#+200 SHARP -"&+200 FLAT 0 OPNBL1, .+1 0 0 0 0 0 OPNBL2, .+1 1 0 0 0 0 CRBL1, OPNBL1+3 /THE MAINLINER! *0200 INIT, CLA TAD OBUFF DCA AUX0 TAD N400 DCA OBCNT L0, NUMBIN JMP L4 /NOT A NUMBER, MUST BE A SWITCH (HOPEFULLY) TAD OCT TAD N5 SMA SZA CLA JMP NORMNM TAD OCT SNA JMP L4 CIA DCA OCT TAD P14 ISZ OCT JMP .-2 L4, DCA NOTSUM TAD NOTSTK DCA AUX1 L3, TAD I AUX1 SNA JMP DELCHK TAD CHAR SNA CLA JMP L2 ISZ AUX1 JMP L3 L2, TAD I AUX1 TAD NOTSUM DCA NOTSUM JMP DELCHK-1 NORMNM, TAD OCT DCA NOTSUM JMP DELCHK GETCHR DELCHK, TAD DELSTK DCA AUX1 TAD I AUX1 SNA HLT TAD CHAR SNA CLA JMP DELFND ISZ AUX1 JMP DELCHK+2 DELFND, TAD I AUX1 DCA .+2 JMP I .+1 RESTRT+1 FRSTHF, TAD NOTSUM AND P77 CLL RTL RTL RTL DCA NOTSUM JMP DELCHK-1 BLDWRD, TAD NOTSUM DCA I AUX0 GETCHR ISZ OBCNT JMP L0 JMP .+5 TAD EXTBLK EXT SZA HLT DCA .-5 TAD OBUFF DCA WFDT+4 TAD N400 DCA WFDT+3 TAD WFDT+5 TAD P400 SNA ISZ WFDT+1 NOP DCA WFDT+5 TAD WFDT WFILE TAD WFDT+6 SZA HLT JMP INIT FLAT, CMA CLL RAL SHARP, IAC TAD NOTSUM DCA NOTSUM JMP DELCHK-1 NOTST0, -"A+200 5 -"B+200 7 -"C+200 10 -"D+200 12 -"E+200 14 -"F+200 1 -"G+200 3 /THE ABOVE ARE THE NOTES; THE FOLLOWING ARE THE SWITCHES! -"S+200 7777 -"X+200 7777 -"W+200 7776 -"Z+200 0 0 /TERMINATED BY A ZERO, OF COURSE. *0400 /NUMBER DECODING ROUTINE - ONLY 0-7 ARE LEGAL DIGITS. NUM0, 0 GETCHR TAD CHAR TAD N67 SMA SZA JMP NUM2 TAD P7 SPA CLA JMP NUM2 ISZ NUM0 DCA OCT SKP NUM1, GETCHR TAD CHAR TAD N67 SMA SZA JMP NUM2 TAD P7 SPA JMP NUM2 DCA CHAR TAD OCT CLL RAL CLL RAL CLL RAL TAD CHAR DCA OCT JMP NUM1 NUM2, CLA JMP I NUM0 /ROUTINE TO GET ONE 7-BIT ASCII CHAR FROM THE FILE OPEN /ON INTERNAL FILE 0 CGET0, 0 CLA JMP I .+1 CGET00, CGET1 DCA CHAR JMP I CGET0 CGET1, TAD IBUFF DCA RFDT+4 TAD N400 DCA RFDT+3 TAD RFDT+5 TAD P400 SNA ISZ RFDT+1 NOP DCA RFDT+5 TAD RFDT RFILE TAD RFDT+6 SZA JMP CGETEO TAD N200 DCA IBCNT TAD IBUFF IAC DCA IPOINT JMP CGET2 CGET2, TAD I IPOINT RTR RTR AND P177 JMS CGET00 TAD I IPOINT AND P7 CLL RTL RTL DCA CGETHL ISZ IPOINT TAD I IPOINT AND P7400 CLL RAL RTL RTL TAD CGETHL JMS CGET00 TAD I IPOINT AND P177 JMS CGET00 ISZ IPOINT ISZ IBCNT JMP CGET2 JMP CGET1 CGETEO, CLL RTR SZA CLA HLT TAD P7 TLS CLA HLT *0600 /TSS8 COMMAND DECODER ROUTINE CD0, 0 CLA STL RAR KSB KSF HLT JMS GET0 OPNBL1+2 HLT JMS GET0 OPNBL2+2 SKP HLT TAD OPNBL2 OPEN SZA HLT TAD CRBL1 CRF SZA HLT TAD OPNBL1 OPEN SZA HLT JMP I CD0 GET0, 0 CLA TAD N10 /IF HE INPUTS 8 CHARS, IT'S A BAD ARG DCA COUNT TAD BUFF DCA 16 /SET UP BUFFER POINTER DCA FLAG GET1, ISZ COUNT SKP HLT KRB DCA CHAR TAD CHAR TAD NBRACK SNA JMP GET2-1 /IF IT'S A "<", SET THE FLAG, AND GO DECODE TAD NCR SNA CLA JMP GET2 /IF IT'S A , GO DECODE TAD CHAR DCA I 16 JMP GET1 ISZ FLAG /PUT A "1" IN FLAG GET2, DCA I 16 /PUT ZEROS IN THE REST OF THE BUFFER ISZ COUNT JMP GET2 TAD BUFF DCA 16 /SET UP THE BUFFER POINTER, AGAIN TAD I GET0 /GET OUT DESTINATION -1 ISZ GET0 /INCREMENT PAST IT DCA 17 /SAVE IT CMA CLL RTL /AC= -3 DCA COUNT GET3, TAD I 16 /GET A CHAR SZA /DON'T TAKE 240 FROM 0 TAD N240 AND P77 /SHAVE OFF EXCESS CLL RTL RTL RTL /PUT IN LEFT BYTE (CHAR 1 IS NOW PACKED) DCA CHAR /SAVE (TEMP) TAD I 16 /GET NEXT CHAR SZA TAD N240 /DON'T TAKE 240 FROM 0 AND P77 /SAVE OFF GARBAGE TAD CHAR /GET CHAR1 DCA I 17 /STORE 2 PACKED CHARS ISZ COUNT /DO IT 3 TIMES JMP GET3 TAD FLAG /GET FLAG TAD GET0 /ADD TO RETURN ADDRESS DCA GET0 /SAVE IT JMP I GET0 /GO AWAY.... N10, -10 FLAG, 0 COUNT, 0 NBRACK, -"< BUFF, END NCR, "<-215 N240, -" END= . $$$