;--------------------------------------- ;- ADVANCED MUSIC SYSTEM - ;--------------------------------------- ;- PROGRAMMING BY DOMINIC FORD - ;--------------------------------------- ;- 18/1/96 - 19/4/96 - ;--------------------------------------- ; ; VARIABLES CURRENT = $FB V1 = $02A7 V2 = $02A8 V3 = $02A9 TEMPSTORE = $02AA VECTA = $02AB VECTB = $02AC CLICK = $02AD XP = $02AE YP = $02AF XPB = $02B0 HOUR = $02B1 ADL = $02B2 ; 16 BIT XPONS = $02B4 PITCH = $02B5 TYPE = $02B6 TEMP = $02B7 T2 = $02B8 T1 = $02B9 XCH = $02BA YCH = $02BB NTYPE = $02BC PTYPE = $02BD FNAMES = $02BE RESTNTE = $02BF FUNCTION = $02C0 FLASH = $02C1 LINESTATE = $02C2 TOPLINE = $02C3 DOTTED = $02C4 PRONOTE = $02C5 PROSSO = $02C6 INTWAIT = $02C7 INTMAX = $02C8 XCU = $02C9 LSBIT = $02CA ENVNUM = $02CB ENVSLC = $02CB REPADD = $02CC ; 16 BIT REST1 = $02CE REST2 = $02CF REST3 = $02D0 REST4 = $02D1 XSTORE = $02D2 RESTSTAT = $02D3 DYNTYPE = $02D4 VOLSTORE = $02D5 REPSTAT = $02D6 DOTKEY = $02D8 FILENAM = $CFE0 ; 16 BYTE ; MUSIC INFO NAMEOP = $41E0 ; 32 BYTE SPEED = $41DE WAVEN = $41CE *= $41BE WAVES .BYTE 33,33 AD .BYTE 136,136 SR .BYTE 136,136 PULSE .BYTE 1,1 ; ROM ROUTINES IRQROM = $EA31 OUTDO = $FFD2 SETLFS = $FFBA SETNAM = $FFBD LOADROM = $FFD5 SAVEROM = $FFD8 TALK = $FFB4 TKSA = $FF96 UNTLK = $FFAB ACPTR = $FFA5 LINPRT = $BDCD STROUT = $AB1E FNADR = $BB FNLEN = $B7 SA = $B9 FA = $BA STATUS = $90 CLOSE = $FFC3 CLRCH = $FFCC OPEN = $FFC0 ; CONSTANTS BOTMUSIC = $4200 TOPMUSIC = $9F90 ; *= $0800 ; .BYTE $00,$0B,$08,$0A,$00,$9E .TEXT "3712" .BYTE 0,0,0 ; *= $0E80 ; ; INITIALISATION LDA #$00 STA FLASH STA FUNCTION STA DOTTED STA ENVSLC STA DYNTYPE LDA #$20 STA FILENAM+12 STA FILENAM+13 STA FILENAM+14 STA FILENAM+15 JSR CLR LDA #$08 STA SPEED LDA #$08 JSR OUTDO LDA #BOTMUSIC STA ADL+1 JSR SCRON LDA #NATN STA $23 JSR SETVARS LDA #CROT STA $23 JSR SETVARS LDA #NOTE STA $23 JSR SETVARS JMP CLSTOP ; BUTTON HANDLING DORMANT LDA CLICK BNE CLIHA JMP CTRL CLIHA LDA XP LDX XPB BNE NOSUB3 SEC SBC #$18 NOSUB3 LSR A LSR A LSR A TAX LDA XPB BEQ NOEXTRAX TXA CLC ADC #$1D TAX NOEXTRAX STX XCH LDA YP SEC SBC #$32 LSR A LSR A LSR A STA YCH CMP #$16 BCS NONOTE CMP #$03 BCC NONOTE LDA XCH CMP #$0B BCC NONOTE CMP #$26 BCS NONOTE LDA YP PHA JSR NOTESET PLA STA YP JMP CLSTOP NONOTE LDA XCH CMP #$07 BNE NOTLEFT JSR LEFTSCR JMP DORMANT NOTLEFT CMP #$27 BNE NOTRIGHT JSR RIGHTSCR JMP DORMANT NOTRIGHT LDY #$00 LDA BPOKES,Y BPLOOP CMP XCH BNE NOTTBP LDA BPOKES+1,Y CMP YCH BNE NOTTBP LDA BPOKES+2,Y STA $22 LDA BPOKES+3,Y STA $23 JSR SETVARS JMP CLSTOP NOTTBP INY INY INY INY LDA BPOKES,Y BNE BPLOOP JMP ROUTINES SETVARS LDY #$00 LDA ($22),Y STA $24 INY LDA ($22),Y STA $25 INY LDA ($22),Y LDY #$00 STA ($24),Y LDY #$02 COLST INY LDA ($22),Y PHA INY LDA #$00 STA $24 LDA #$D8 STA $25 LDA ($22),Y BEQ NOYS TAX YALOP LDA $24 CLC ADC #$28 STA $24 LDA $25 ADC #$00 STA $25 DEX BNE YALOP NOYS PLA STA TEMPSTORE LDA $24 CLC ADC TEMPSTORE STA POKEHERE+1 LDA $25 ADC #$00 STA POKEHERE+2 LDX #$00 INY COLOUR LDA ($22),Y CMP #$FF BEQ CLEND CMP #$FE BEQ COLST POKEHERE STA $1234,X INX INY JMP COLOUR CLEND RTS CLSTOP LDA CLICK BNE CLSTOP JMP DORMANT ROUTINES LDY #$00 LDA BROUTS,Y ROUTLOOP CMP XCH BNE NOTTROUT LDA BROUTS+1,Y CMP YCH BNE NOTTROUT LDA BROUTS+2,Y STA $22 LDA BROUTS+3,Y STA $23 TYA LSR A LSR A TAY LDA FNUM,Y STA FUNCTION LDA #>ROUTBACK PHA LDA #EXIT .BYTE 1,7,ENVEL .BYTE 2,7,ENVEL .BYTE 3,7,ENVEL .BYTE 4,7,ENVEL .BYTE 5,7,ENVEL .BYTE 6,7,ENVEL .BYTE 1,9,SAVE .BYTE 2,9,SAVE .BYTE 3,9,SAVE .BYTE 4,9,LOAD .BYTE 5,9,LOAD .BYTE 6,9,LOAD .BYTE 4,2,NAME .BYTE 5,2,NAME .BYTE 6,2,NAME .BYTE 2,4,TEMPO .BYTE 3,4,TEMPO .BYTE 4,4,TEMPO .BYTE 5,4,TEMPO .BYTE 2,13,PLAY .BYTE 3,13,PLAY .BYTE 4,13,PLAY .BYTE 1,11,CLRY .BYTE 2,11,CLRY .BYTE 3,11,CLRY .BYTE 4,11,GOTO .BYTE 5,11,GOTO .BYTE 6,11,GOTO .BYTE 1,10,DIRECTOR .BYTE 2,10,DIRECTOR .BYTE 3,10,DIRECTOR .BYTE 4,10,DIRECTOR .BYTE 5,10,DIRECTOR .BYTE 6,10,DIRECTOR .BYTE 2,8,DISCERR .BYTE 3,8,DISCERR .BYTE 4,8,DISCERR .BYTE 5,8,DISCERR .BYTE 6,13,DYNAM .BYTE 255,0,0,0 ; FNUM .BYTE 1,2,2,2,2,2,2,3,3,3 .BYTE 4,4,4,5,5,5,6,6,6,6 .BYTE 7,7,7,8,8,8,9,9,9,10 .BYTE 10,10,10,10,10 .BYTE 11,11,11,11,12 ; CLFUNCS .BYTE $00,$D8,$19,$D9,$1A,$D9 .BYTE $1B,$D9,$1C,$D9,$1D,$D9 .BYTE $1E,$D9,$69,$D9,$6A,$D9 .BYTE $6B,$D9,$6C,$D9,$6D,$D9 .BYTE $6E,$D9,$54,$D8,$55,$D8 .BYTE $56,$D8,$A2,$D8,$A3,$D8 .BYTE $A4,$D8,$A5,$D8,$0A,$DA .BYTE $0B,$DA,$0C,$DA,$0D,$DA .BYTE $B9,$D9,$BA,$D9,$BB,$D9 .BYTE $BC,$D9,$BD,$D9,$BE,$D9 .BYTE $91,$D9,$92,$D9,$93,$D9 .BYTE $94,$D9,$95,$D9,$96,$D9 .BYTE $42,$D9,$43,$D9,$44,$D9 .BYTE $45,$D9,$0E,$D9 .BYTE 255,0 ; FUFLASH .BYTE $00,$D8,1,0 .BYTE $19,$D9,6,0 .BYTE $69,$D9,3,0 .BYTE $6C,$D9,3,0 .BYTE $54,$D8,3,0 .BYTE $A2,$D8,4,0 .BYTE $0A,$DA,3,0 .BYTE $B9,$D9,3,0 .BYTE $BC,$D9,3,0 .BYTE $91,$D9,6,0 .BYTE $42,$D9,4,0 .BYTE $0E,$D9,1,0 ; FLCOLS .BYTE 0,11,12,15,1,1,15,12,11,0 ; BPOKES .BYTE 2,21,SHARP .BYTE 3,21,FLAT .BYTE 4,21,NATR .BYTE 5,21,NATN .BYTE 1,15,BARL .BYTE 2,15,BARL .BYTE 1,16,BARL .BYTE 2,16,BARL .BYTE 5,15,BARD .BYTE 6,15,BARD .BYTE 5,16,BARD .BYTE 6,16,BARD .BYTE 1,18,BARR .BYTE 2,18,BARR .BYTE 1,19,BARR .BYTE 2,19,BARR .BYTE 5,18,RBAR .BYTE 6,18,RBAR .BYTE 5,19,RBAR .BYTE 6,19,RBAR .BYTE 9,22,SEMI .BYTE 9,23,SEMI .BYTE 10,22,SEMI .BYTE 10,23,SEMI .BYTE 12,22,QUAV .BYTE 13,22,QUAV .BYTE 12,23,QUAV .BYTE 13,23,QUAV .BYTE 15,22,CROT .BYTE 16,22,CROT .BYTE 15,23,CROT .BYTE 16,23,CROT .BYTE 18,22,MINI .BYTE 19,22,MINI .BYTE 18,23,MINI .BYTE 19,23,MINI .BYTE 21,22,BREV .BYTE 22,22,BREV .BYTE 21,23,BREV .BYTE 22,23,BREV .BYTE 24,22,TRIP .BYTE 25,22,TRIP .BYTE 24,23,TRIP .BYTE 25,23,TRIP .BYTE 27,22,INS .BYTE 28,22,INS .BYTE 29,22,INS .BYTE 30,22,INS .BYTE 27,23,DEL .BYTE 28,23,DEL .BYTE 29,23,DEL .BYTE 30,23,DEL .BYTE 1,23,REST .BYTE 2,23,REST .BYTE 3,23,REST .BYTE 4,23,NOTE .BYTE 5,23,NOTE .BYTE 6,23,NOTE .BYTE 0,0,0,0 ; REST .BYTE RESTNTE,0,1,23 .BYTE 6,6,6,0,0,0,255 NOTE .BYTE RESTNTE,1,1,23 .BYTE 0,0,0,6,6,6,255 SHARP .BYTE PTYPE,1,2,21 .BYTE 6,0,0,0,255 FLAT .BYTE PTYPE,0,2,21 .BYTE 0,6,0,0,255 NATR .BYTE PTYPE,2,2,21 .BYTE 0,0,6,0,255 NATN .BYTE PTYPE,3,2,21 .BYTE 0,0,0,6,255 BARL .BYTE NTYPE,1,1,15 .BYTE 6,6,0,0,0,0,254,1,16 .BYTE 6,6,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 BARD .BYTE NTYPE,0,1,15 .BYTE 0,0,0,0,6,6,254,1,16 .BYTE 0,0,0,0,6,6,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 BARR .BYTE NTYPE,2,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 6,6,0,0,0,0,254,1,19 .BYTE 6,6,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 RBAR .BYTE NTYPE,3,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,6,6,254,1,19 .BYTE 0,0,0,0,6,6,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 SEMI .BYTE NTYPE,4,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 6,6,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 6,6,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 QUAV .BYTE NTYPE,5,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,6,6,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,6,6,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 CROT .BYTE NTYPE,6,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,6,6,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,6,6,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 MINI .BYTE NTYPE,7,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,6,6 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,6,6 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 BREV .BYTE NTYPE,8,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,6,6,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,6,6,0,0,0,0,0,0,0,0,0 .BYTE 255 INS .BYTE NTYPE,9,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,6,6,6,6 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 255 DEL .BYTE NTYPE,10,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,0,0,0,6,6,6,6,6 .BYTE 255 TRIP .BYTE NTYPE,11,1,15 .BYTE 0,0,0,0,0,0,254,1,16 .BYTE 0,0,0,0,0,0,254,1,18 .BYTE 0,0,0,0,0,0,254,1,19 .BYTE 0,0,0,0,0,0,254,9,22 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,6,6,0,0,0,0,0 .BYTE 254,9,23 .BYTE 0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,0,0,0,6,6,0,0,0,0,0,0 .BYTE 255 ; сцроллинг роутинес LEFTSCR LDA ADL BNE LEFTS LDA ADL+1 CMP #>BOTMUSIC BNE LEFTS RTS LEFTS LDA ADL SEC SBC #$08 STA ADL LDA ADL+1 SBC #$00 STA ADL+1 JMP DISPLAY RIGHTSCR LDA ADL CMP #<(TOPMUSIC+8) BNE RIGHTS LDA ADL+1 CMP #>(TOPMUSIC+8) BNE RIGHTS RTS RIGHTS LDA ADL CLC ADC #$08 STA ADL LDA ADL+1 ADC #$00 STA ADL+1 JMP DISPLAY ; пут ноте онто стаже NOTESET LDA #$00 STA V1 LDA PTYPE BNE NOFLATEN LDA YP CLC ADC #$04 STA YP SEC SBC #$32 LSR A LSR A LSR A STA YCH NOFLATEN LDA YP SEC SBC #$32 AND #$07 CMP #$06 BCC NSET LDA #$01 STA V1 NSET LDA XCH SEC SBC #$0B AND #$FE ASL A ASL A CLC ADC ADL STA $22 LDA ADL+1 ADC #$00 STA $23 LDY #$07 LDA DYNTYPE ASL A ASL A ASL A ASL A STA TEMPSTORE LDA ($22),Y AND #$0F CLC ADC TEMPSTORE STA ($22),Y LDY #$00 NOTESGET LDA ($22),Y BEQ NOWINY INY CPY #$05 BNE NOTESGET NOWINY STY TEMPSTORE LDA NTYPE CMP #$04 BCS SINGLE LDA #$FF SEC SBC NTYPE CPY #$00 BNE LINERROR STA ($22),Y JMP DISPLAY LINERROR LDY #$00 CMP ($22),Y BNE LINENOTE LDA #$00 STA ($22),Y JMP DISPLAY LINENOTE LDA #LETEXT STA $23 JMP REPORTER INSDELT JMP INSTDEL SINGLE CMP #$0B BNE NOTTRIP LDA #$00 STA DOTTED STA $DB90 LDA #$09 JMP TRIPPUT NOTTRIP CMP #$09 BCS INSDELT TRIPPUT STY $FB TAX LDY #$00 LDA ($22),Y CMP #$FC BCC SINGLEC JMP LINENOTE SINGLEC LDY $FB TXA SEC SBC #$04 ASL A ADC DOTTED STA REST1 TAX TYA AND #$01 BEQ NOTROLL TXA ASL A ASL A ASL A ASL A TAX LDA #$0F STA V3 JMP ROLLBACK NOTROLL LDA #$F0 STA V3 ROLLBACK TYA LSR A CLC ADC #$05 TAY STX V2 LDA ($22),Y AND V3 CLC ADC V2 STA ($22),Y LDA RESTNTE BNE NOPREST JMP RESTPUT NOPREST LDA YCH CLC ADC V1 STA T1 LDY #$00 FINDLOOP LDA NOTETAB+1,Y LDX T1 AND #$06 CMP #$04 BNE FINDCONT DEX FINDCONT LDA NOTETAB+1,Y AND #$02 BEQ FCII DEX FCII STX YCH LDA NOTETAB,Y CMP #$FF BEQ NOPUT CMP YCH BNE NOTTHIS LDA NOTETAB+1,Y AND #$01 BEQ IFNOA LDA PTYPE CMP #$02 BCS NOTTHIS JMP THISISIT IFNOA LDA PTYPE CMP #$02 BCS THISISIT NOTTHIS INY INY JMP FINDLOOP THISISIT LDA YP SEC SBC #$34 AND #$04 LSR A STA T2 LDA NOTETAB+1,Y AND #$02 CMP T2 BNE NOTTHIS TYA LSR A STA T2 LDY #$FF CHECKFS INY LDA ($22),Y AND #$BF CMP T2 BEQ REMOVE CPY TEMPSTORE BNE CHECKFS CPY #$05 BEQ TOOMANY LDX T2 LDA PTYPE AND #$01 BNE NOBIT7 TXA EOR #$80 TAX NOBIT7 TXA LDX ENVNUM CLC ADC ENBTAB,X STA ($22),Y NOPUT JMP DISPLAY ENBTAB .BYTE 0,64 TOOMANY LDA #TMERR STA $23 JMP REPORTER REMOVE STY T2 MDLOP INY LDA ($22),Y DEY MD5LOP STA ($22),Y INY CPY TEMPSTORE BEQ MOVETIME CPY #$04 BNE MDLOP LDA #$00 JMP MD5LOP MOVETIME LDA #$00 LDY TEMPSTORE DEY STA ($22),Y LDY T2 MTLOOP INY STY T1 LDA #$0F STA V1 TYA LSR A CLC ADC #$05 TAY LDA ($22),Y TAX LDA T1 AND #$01 BEQ NOMULT TXA LSR A LSR A LSR A LSR A AND #$0F TAX LDA #$F0 STA V1 JMP MULTCONT NOMULT TXA ASL A ASL A ASL A ASL A AND #$F0 TAX MULTCONT LDY T1 DEY TYA LSR A CLC ADC #$05 TAY STX T2 LDA ($22),Y AND V1 CLC ADC T2 STA ($22),Y LDY T1 CPY TEMPSTORE BEQ NOPUTT JMP MTLOOP NOPUTT JMP NOPUT INSTDEL CMP #$0A BEQ DELETELN LDA TOPMUSIC+$68 BNE TOOLER LDA #<(TOPMUSIC+$68) STA $24 LDA #>(TOPMUSIC+$68) STA $25 MOVEUPLP DEC $24 LDA $24 CMP #$FF BNE MOVEUP DEC $25 MOVEUP LDY #$00 LDA ($24),Y LDY #$08 STA ($24),Y LDA $24 CMP $22 BNE MOVEUPLP LDA $25 CMP $23 BNE MOVEUPLP LDY #$00 TYA CLEARINS STA ($22),Y INY CPY #$08 BNE CLEARINS JMP DISPLAY DELETELN LDA $22 STA $24 LDA $23 STA $25 MOVEDN LDY #$08 LDA ($24),Y LDY #$00 STA ($24),Y INC $24 BNE MOVEDN INC $25 LDA $25 CMP #>(TOPMUSIC+$0100) BNE MOVEDN DEC $25 LDA #$F8 STA $24 LDY #$00 TYA CLEARDEL STA ($24),Y INY CPY #$08 BNE CLEARDEL JMP DISPLAY TOOLER LDA #TOOLONG STA $23 JMP REPORTER RESTPUT LDY #$00 RSTPLOP LDA ($22),Y CMP #$FB BNE NOTRST TYA PHA LSR A CLC ADC #$05 TAY LDA ($22),Y TAX PLA PHA AND #$01 BEQ NORSROLL TXA LSR A LSR A LSR A LSR A TAX NORSROLL PLA TAY TXA AND #$0F CMP REST1 BNE NOTRST JMP REMOVE NOTRST INY CPY TEMPSTORE BNE RSTPLOP CPY #$05 BNE NREMRST JMP TOOMANY NREMRST LDA #$FB STA ($22),Y JMP DISPLAY ; еррор роутинес + теьт ERRT .TEXT "_]]]]]]]GTTQT]]]]]]]]_" .BYTE 0 CLICKT .TEXT "_]]]]]]]ENKEM]]]]]]]]_" .BYTE 144,0 BETERR .TEXT "^ ^" .BYTE 0 TOOLONG .TEXT "_]]]OWUKE]VQQ]NQPI]]]_" .BYTE 0 LETEXT .TEXT "_NKPG]QP]VQR]QH]PQVG]_" .BYTE 0 TMERR .TEXT "_OQTG]VJCP]HKXG]PQVGU_" .BYTE 0 CLERED .TEXT " " .BYTE 0 REPORTER LDA #$08 STA 211 LDA #$0C STA 214 JSR 58732 LDA #28 JSR OUTDO JSR ERRPRINT LDA #$08 STA 211 LDA #$0B STA 214 JSR 58732 LDA #BETERR STA $23 JSR ERRPRINT LDA #$08 STA 211 LDA #$0D STA 214 JSR 58732 JSR ERRPRINT LDA #$08 STA 211 LDA #$0A STA 214 JSR 58732 LDA #ERRT STA $23 JSR ERRPRINT PUTFINT LDA #$08 STA 211 LDA #$0E STA 214 JSR 58732 LDA #CLICKT STA $23 JSR ERRPRINT ERRFIN LDA CLICK BNE ERRFIN DORCLERR LDA CLICK BEQ DORCLERR LDA #CLERED STA $23 LDA #$0A PHA ERGETRID STA 214 LDA #$08 STA 211 JSR 58732 JSR ERRPRINT PLA CLC ADC #$01 CMP #$0F BEQ DISPCLE PHA JMP ERGETRID DISPCLE JSR DISPLAY RTS ERRPRINT LDY #$00 EPLOP LDA ($22),Y BEQ ERRFINPR JSR OUTDO INY JMP EPLOP ERRFINPR RTS ; грапхиц роутинес SCRON LDA #$0F STA $D020 STA $D021 LDA #$80 STA YP LDA #$01 STA XPB LDA #$00 STA HOUR STA XP JSR LEFT LDA #$00 TAY STA $FB LDX #$D8 STX $FC COLLOP STA ($FB),Y INY BNE COLLOP INC $FC LDX $FC CPX #$DC BNE COLLOP LDA #$C8 STA $D016 LDA #$18 STA $D018 SEI LDA #IRQ STA $0315 JSR MSTOP JSR CONTROL JMP DISPLAY SCROFF LDA #$C8 STA $D016 LDA #$15 STA $D018 SEI LDA #IRQROM STA $0315 CLI LDA #$05 JSR OUTDO LDA #147 JMP OUTDO ; вимп роутинес IRQ INC FLASH LDA FLASH CMP #$14 BNE NORESET LDA #$00 STA FLASH NORESET AND #$01 BEQ IRQAFL LDA FUNCTION BEQ IRQAFL SEC SBC #$01 ASL A ASL A TAY LDA FUFLASH,Y STA $3F LDA FUFLASH+1,Y STA $40 LDA FUFLASH+2,Y TAX LDA FLASH LSR A TAY LDA FLCOLS,Y LDY #$00 FLASHLOP STA ($3F),Y INY DEX BNE FLASHLOP IRQAFL LDA #$00 STA CLICK LDA $C5 CMP #$01 BNE CONCHECK STA CLICK CONCHECK CMP #$0C BEQ LEFTK LKC CMP #$17 BEQ RIGHTK RKC CMP #$32 BEQ UPK UPKC CMP #$37 BEQ DOWNK DKC LDA $DC00 AND #$01 BEQ UPJ UJC LDA $DC00 AND #$02 BEQ DOWNJ DJC LDA $DC00 AND #$04 BEQ LEFTJ LJC LDA $DC00 AND #$08 BEQ RIGHTJ RJC LDA $DC00 AND #$10 EOR #$10 BEQ CJCH STA CLICK CJCH JMP (VECTA) LEFTK JSR LEFT JMP LKC RIGHTK JSR RIGHT JMP RKC UPK JSR UP JMP UPKC DOWNK JSR DOWN JMP DKC UPJ JSR UP JMP UJC DOWNJ JSR DOWN JMP DJC LEFTJ JSR LEFT JMP LJC RIGHTJ JSR RIGHT JMP RJC LEFT DEC XP LDA XP CMP #$FF BNE NOTFF LDY #$00 STY XPB NOTFF LDY XPB BNE FIN CMP #$18 BNE FIN INC XP FIN JMP CONTROL RIGHT INC XP LDA XP BNE NOT00 LDY #$01 STY XPB NOT00 LDY XPB BEQ FIN CMP #$58 BNE FIN DEC XP JMP CONTROL UP DEC YP LDA YP CMP #$32 BNE FIN INC YP JMP CONTROL DOWN INC YP LDA YP CMP #$F8 BNE FIN DEC YP CONTROL LDA HOUR BEQ NHGLASS LDX #$3A STX $07F8 INX STX $07F9 NHGLASS LDA XP STA $D000 STA $D002 LDA YP STA $D001 STA $D003 LDA $D010 AND #$FC LSR A CLC ADC XPB ASL A CLC ADC XPB STA $D010 LDA #$00 STA $D027 LDA #$01 STA $D028 LDA $D015 ORA #$03 STA $D015 LDA HOUR BNE QTRO LDX #$38 STX $07F8 INX STX $07F9 QTRO RTS ; фиже лине стаже принт DISPLAY LDY #$00 STY $22 STY $24 STY RESTSTAT LDA #$07 STA TOPLINE LDA #$28 STA $23 LDA #$04 STA $25 DISPLOOP LDA ($22),Y STA ($24),Y INY CPY #$F0 BNE NFIYET LDA $25 CMP #$07 BNE NFIYET JMP FINSCR NFIYET CPY #$00 BNE DISPLOOP INC $23 INC $25 JMP DISPLOOP FINSCR JSR NOWRAP JSR PRINNAM JSR DYNPRT JSR REDREMVE LDY #$00 STY XPONS LDA ADL STA $22 LDA ADL+1 STA $23 DLOP LDA #$90 JSR OUTDO LDA ($22),Y BEQ NEXTD STY TEMP TAX TYA AND #$07 PHA LSR A CLC ADC #$05 TAY LDA ($22),Y TAY PLA AND #$01 BEQ NROLD TYA LSR A LSR A LSR A LSR A TAY NROLD TYA AND #$0F TAY LDA XPONS JSR DISPNOTE LDY TEMP INY CPY #$05 BNE DLOP NEXTD LDA #$03 STA 214 LDA XPONS ASL A CLC ADC #$0C STA 211 JSR 58732 LDY #$07 LDA ($22),Y LSR A LSR A LSR A LSR A CMP #$00 BEQ NOCHADYN CLC ADC #178 JSR OUTDO NOCHADYN LDY #$00 STY RESTSTAT LDA #$07 STA TOPLINE INC XPONS LDA $22 CLC ADC #$08 STA $22 LDA $23 ADC #$00 STA $23 LDA XPONS CMP #$0D BNE DLOP RTS OTHCHAR JMP OTHERCH DISPNOTE ASL A CLC ADC #$0C STA 211 LDA #$00 STA LINESTATE STX PITCH TXA CMP #$F8 BCS OTHCHAR LDA PITCH AND #$40 BEQ BLANTE LDA #28 JSR OUTDO JMP COLOSET BLANTE LDA #144 JSR OUTDO COLOSET LDA PITCH AND #$3F ASL A STY TYPE TAY STY T2 LDA NOTETAB,Y STA 214 CMP TOPLINE BCS MOVECURS STA $02 LDA TOPLINE SEC SBC $02 STA LINESTATE MOVECURS LDA NOTETAB+1,Y AND #$02 STA LSBIT LDY TEMP LDA ($22),Y CMP #$80 BCC MOVECUS LDY T2 LDA NOTETAB+1,Y AND #$01 BEQ MOVECUS LDA LSBIT EOR #$02 STA LSBIT BEQ LIUPR LDA NOTETAB+1,Y AND #$04 BNE MOVECUS UPCHAR LDA #145 JSR OUTDO JMP MOVECUS LIUPR LDA NOTETAB+1,Y AND #$04 BNE UPCHAR MOVECUS LDA 214 SEC SBC #$02 CMP TOPLINE BCS MOVEC STA TOPLINE MOVEC JSR 58732 LDY T2 LDA NOTETAB+1,Y AND #$FD CLC ADC LSBIT LSR A STA T2 LDA TYPE AND #$FE ASL A CMP #$14 CLC BNE TRIPBACK ADC #$33 TRIPBACK ADC T2 ADC #$61 PHA JSR OUTDO LDA #$11 JSR OUTDO LDA #$9D JSR OUTDO LDA #$12 JSR OUTDO PLA JSR OUTDO LDA #$92 JSR OUTDO LDA NOTETAB+1,Y AND #$01 BEQ NOTSF LDA LSBIT BEQ NOTSP LDY TEMP LDA ($22),Y CMP #$80 BCS FLATSP LDA #SHARSPAC STA $27 JMP DRAWACC FLATSP LDA #FLATSPAC STA $27 JMP DRAWACC NOTSP LDA NOTETAB+1,Y LDY TEMP AND #$04 BEQ NOTSPA LDA ($22),Y CMP #$80 BCS FLATLA LDA #SHARLINA STA $27 JMP DRAWACC FLATLA LDA #FLATLINA STA $27 JMP DRAWACC NOTSPA LDA ($22),Y CMP #$80 BCS FLATLB LDA #SHARLINB STA $27 JMP DRAWACC FLATLB LDA #FLATLINB STA $27 JMP DRAWACC LDY TEMP NOTSF STY $26 LDY TEMP LDA ($22),Y LDY $26 CMP #$80 BCC NOTEOS LDA NOTETAB+1,Y AND #$02 BEQ NOTSPN LDA #NATRSPAC STA $27 JMP DRAWACC NOTSPN LDA NOTETAB+1,Y AND #$04 BEQ NOTSPAN LDA #NATRLINA STA $27 JMP DRAWACC NOTSPAN LDA #NATRLINB STA $27 DRAWACC LDY #$00 DACCLOP LDA ($26),Y BEQ NOTEOS JSR OUTDO INY JMP DACCLOP NOTEOS LDA TYPE AND #$01 BEQ NOTDOTT LDA #190 JSR OUTDO LDA #145 JSR OUTDO LDA #157 JSR OUTDO LDA #189 JSR OUTDO LDA #157 JSR OUTDO LDA #17 JSR OUTDO NOTDOTT LDA LINESTATE BEQ NEXTNOTE TAY LSLOP LDA #157 JSR OUTDO LDA #17 JSR OUTDO LDA #$60 JSR OUTDO DEY BNE LSLOP NEXTNOTE RTS ; *= $080D ; NEXTNOTH RTS OTHERCH SEC SBC #$FB TAX BEQ RESTT DEX BEQ RREPEATT DEX BEQ REPEATRT DEX BEQ BAR LDA #DOUBLEB STA $27 JMP PSTRING RESTT JMP RESTONS RREPEATT JMP RREPEAT REPEATRT JMP REPEATR BAR LDA #BART STA $27 PSTRING LDA #$09 STA 214 JSR 58732 LDY #$00 PSTRLOP LDA ($26),Y BEQ NEXTNOTH CMP #$FF BEQ DOWNLEFT JSR OUTDO INY JMP PSTRLOP DOWNLEFT LDA #17 JSR OUTDO LDA #157 JSR OUTDO INY JMP PSTRLOP RREPEAT LDA #RREPTEXT STA $27 JMP PSTRING REPEATR LDA #REPRTEXT STA $27 JMP PSTRING RESTONS STY TYPE NRESTSTT LDY #$00 LDX RESTSTAT RESTCLOP LDA ($22),Y AND #$3F BEQ PUTREST SEC SBC RESTTAB,X CMP #$06 BCC BADSTAT CMP #$FA BCS BADSTAT INY CPY #$05 BNE RESTCLOP PUTREST LDA RESTTAB,X ASL A TAX LDA NOTETAB,X STA 214 JSR 58732 LDA #146 JSR OUTDO LDA TYPE LSR A CLC ADC #$AC TAY JSR OUTDO LDA #17 JSR OUTDO LDA #157 JSR OUTDO LDA #18 JSR OUTDO TYA JSR OUTDO LDA #146 JSR OUTDO INC RESTSTAT JMP NOTEOS BADSTAT INC RESTSTAT JMP NRESTSTT ; REDREMVE LDY #$00 STY $26 LDA #$D8 STA $27 REDREMLP LDA ($26),Y AND #$0F CMP #$02 BNE NOTREDCH LDA #$00 STA ($26),Y NOTREDCH INY BNE REDREMLP INC $27 LDA $27 CMP #$DC BNE REDREMLP RTS ; цхарацтер листс SHARSPAC .BYTE 157,157,18,187,157,145 .BYTE 186,17,146,29,0 SHARLINA .BYTE 157,157,18,188,146,29,0 SHARLINB .BYTE 157,157,145,18,188,146 .BYTE 29,17,0 FLATSPAC .BYTE 157,157,18,184,157,145 .BYTE 183,17,146,29,0 FLATLINA .BYTE 157,157,18,185,146,29,0 FLATLINB .BYTE 157,157,145,18,185,146 .BYTE 29,17,0 NATRSPAC .BYTE 157,157,18,181,157,145 .BYTE 180,17,146,29,0 NATRLINA .BYTE 157,157,18,182,146,29,0 NATRLINB .BYTE 157,157,145,18,182,146 .BYTE 29,17,0 ; BART .BYTE 164,255,117,255,117 .BYTE 255,117,255,117,255 .BYTE 166,255,117,255,117,255 .BYTE 117,255,117,255,18,164 .BYTE 146,0 DOUBLEB .BYTE 165,255,118,255,118 .BYTE 255,118,255,118,255 .BYTE 167,255,118,255,118,255 .BYTE 118,255,118,255,18,165 .BYTE 146,0 REPRTEXT .BYTE 165,255,118,255,119 .BYTE 255,118,255,118,255 .BYTE 167,255,118,255,118,255 .BYTE 119,255,118,255,18,165 .BYTE 146,0 RREPTEXT .BYTE 165,255,118,255,157,120 .BYTE 118,255,118,255,118,255 .BYTE 167,255,118,255,118,255 .BYTE 157,120,118,255,118 .BYTE 255,18,165,146,0 ; RESTTAB .BYTE 36,34,15,13,25,27,42 .BYTE 29,22,8,1 ; ; ноте дисплаы табле NOTETAB .BYTE 0,0,20,4,20,5,20,6,20,7;C .BYTE 19,4,19,6,19,7 ;E .BYTE 18,4,18,5,18,6,18,7 ;G .BYTE 17,4,17,6,17,7 ;B .BYTE 16,4,16,5,16,6,16,0 ;D .BYTE 16,1,15,2,15,3,15,0 ;F .BYTE 15,1,14,2,14,0 ;A .BYTE 14,1,13,6,13,7 ;C .BYTE 12,4,12,6,12,7 ;E .BYTE 11,4,11,5,11,6,11,7 ;G .BYTE 10,4,10,2,10,3,10,0,10,1 .BYTE 9,2,9,0,9,1,8,2 .BYTE 8,3,8,0,8,1 ;F .BYTE 7,2,7,0,7,1 ;A .BYTE 6,2,6,3,6,0 ;C .BYTE 5,2,5,3,5,0,5,1 ;E .BYTE 4,2,4,3,4,0 ;G .BYTE 255,255 ; мусиц он/офф PLAY JSR MSTART PLAYLOOP LDA CLICK BEQ PLAYMRE LDA XPB BNE PLAYMRE LDA XP CMP #$28 BCC PLAYMRE CMP #$48 BCS PLAYMRE LDA YP CMP #$92 BCC PLAYMRE CMP #$9A BCS PLAYMRE JMP MSTOP PLAYMRE LDA VECTA CMP #BOTMUSIC BCC OFFLEFT STA ADL+1 PLII JSR DISPLAY JMP PLAYLOOP OFFLEFT LDA #BOTMUSIC STA ADL+1 JMP PLII PLAYEND RTS MSTART SEI LDA #MPV STA VECTB LDA #BOTMUSIC STA CURRENT+1 SBC #$00 STA REPADD+1 LDY #$17 LDA #$00 CLESOUL STA $D400,Y DEY BNE CLESOUL STA INTWAIT STA REPSTAT STA REST1 STA REST2 STA REST3 STA REST4 LDA #$07 STA $D418 STA VOLSTORE LDA #$02 STA V1 STA V2 STA V3 CLI RTS MSTOP SEI LDA #IRQROM STA VECTB LDA #$00 STA $D418 CLI RTS ; мусиц плаыер NLINET JMP NEXTLINE SKIPLINE LDA $FB CLC ADC #$08 STA $FB LDA $FC ADC #$00 STA $FC PROCESS LDY #$07 LDA (CURRENT),Y LSR A LSR A LSR A LSR A BEQ DYNFIN CMP #$06 BEQ CRESC CMP #$07 BEQ DECRESC TAX LDA VOLUME,X STA $D418 STA VOLSTORE JMP DYNFIN CRESC LDA VOLSTORE CMP #$0F BEQ DYNFIN CLC ADC #$01 STA $D418 STA VOLSTORE JMP DYNFIN DECRESC LDA VOLSTORE CMP #$01 BEQ DYNFIN SEC SBC #$01 STA $D418 STA VOLSTORE DYNFIN LDY #$00 PROLOP LDA (CURRENT),Y BEQ NLINET CMP #$FF BEQ MSTOP CMP #$FE BEQ SKIPLINE CMP #$FD BNE NOTSETRP LDA CURRENT STA REPADD LDA CURRENT+1 STA REPADD+1 LDA #$00 STA REPSTAT JMP SKIPLINE NOTSETRP CMP #$FC BNE NOREPT LDA REPSTAT BNE SKIPLINE LDA #$01 STA REPSTAT LDA REPADD STA CURRENT LDA REPADD+1 STA CURRENT+1 JMP SKIPLINE NOREPT CMP #$FB BNE PLAYNOTE TYA PHA JSR LENFETCH SEC SBC #$01 JSR RESTMAKE JMP FINIREST PLAYNOTE LDA (CURRENT),Y AND #$40 ASL A ASL A ROL A STA ENVNUM LDA V1 CMP V2 BCS V1MV2 LDX #$00 JMP V3TEST V1MV2 LDX #$01 V3TEST LDA V1,X CMP V3 BCC NOTV3 LDX #$02 NOTV3 LDA V1,X CMP #$02 BCC NOREST TXA PHA TYA PHA LDA V1,X SEC SBC #$01 JSR RESTMAKE PLA TAY PLA TAX NOREST LDA PITCHV,X STA TEMPSTORE STX XSTORE JSR LENFETCH LDX XSTORE STA V1,X LDA (CURRENT),Y AND #$3F TAX TYA PHA LDA PITCHL,X LDY TEMPSTORE STA $D400,Y LDA PITCHH,X STA $D401,Y LDX ENVNUM LDA AD,X STA $D405,Y LDA SR,X STA $D406,Y LDA WAVES,X STA $D404,Y STA WAVEN,Y LDA PULSE,X STA $D403,Y LDA #$80 STA $D402,Y FINIREST PLA TAY INY CPY #$05 BEQ NEXTLINE JMP PROLOP NEXTLINE LDA CURRENT CLC ADC #$08 STA CURRENT LDA CURRENT+1 ADC #$00 STA CURRENT+1 LDY #$00 RTS IRQCONT JMP IRQROM MPV INC INTWAIT LDA INTWAIT CMP INTMAX BNE IRQCONT LDA #$00 STA INTWAIT LDA PROSSO BNE REPRO LDA PRONOTE BEQ NOPLGAP STA PROSSO JMP IRQROM REPRO DEC PROSSO NOPLGAP LDA #$00 STA TEMPSTORE LDA V1 BEQ V2DEC DEC V1 LDA V1 CMP #$01 BNE V2DEC LDA WAVEN AND #$FE STA $D404 LDA #$01 STA TEMPSTORE V2DEC LDA V2 BEQ V3DEC DEC V2 LDA V2 CMP #$01 BNE V3DEC LDA WAVEN+7 AND #$FE STA $D40B LDA #$01 STA TEMPSTORE V3DEC LDA V3 BEQ R1DEC DEC V3 LDA V3 CMP #$01 BNE R1DEC LDA WAVEN+14 AND #$FE STA $D412 LDA #$01 STA TEMPSTORE R1DEC LDA REST1 BEQ R2DEC DEC REST1 BNE R2DEC LDA #$01 STA TEMPSTORE R2DEC LDA REST2 BEQ R3DEC DEC REST2 BNE R3DEC LDA #$01 STA TEMPSTORE R3DEC LDA REST3 BEQ R4DEC DEC REST3 BNE R4DEC LDA #$01 STA TEMPSTORE R4DEC LDA REST4 BEQ VDECE DEC REST4 BNE VDECE LDA #$01 STA TEMPSTORE VDECE LDA TEMPSTORE BEQ VDECEB JSR PROCESS VDECEB JMP IRQROM LENFETCH TYA PHA LSR A CLC ADC #$05 TAY LDA (CURRENT),Y TAY PLA PHA AND #$01 BEQ NOROLL TYA LSR A LSR A LSR A LSR A TAY NOROLL TYA AND #$0F TAY LDA LENGTH,Y CLC ADC #$01 TAX PLA TAY TXA RTS RESTMAKE PHA LDA REST1 CMP REST2 BCS R1LESS ; LDX #$01 JMP R34TEST R1LESS LDX #$00 R34TEST LDA REST3 CMP REST4 BCS R3LESS ; LDY #$04 JMP R13TEST R3LESS LDY #$03 R13TEST LDA REST1,X CMP REST1,Y BCS RESTXL ; TYA TAX RESTXL PLA LDY REST1,X CMP REST1,X BCC RESTMADE ; STA REST1,X RESTMADE RTS DOTCYCLE LDA DOTKEY BNE ENDDOT LDA #$01 STA DOTKEY LDA DOTTED EOR #$01 STA DOTTED LDA $DB90 EOR #$06 STA $DB90 ENDDOT JMP DORMANT ; *= $3400 ; ; дисплаы дирецторы DIRINIT LDA #$00 STA FUNCTION LDA $D011 AND #$EF STA $D011 JSR DISPENV LDA #$93 JSR OUTDO LDA $D011 ORA #$10 STA $D011 LDA #$00 STA $0286 LDA #$15 STA $D018 LDA #%00110111 STA $01 LDA #DOLLAR STA FNADR+1 LDA #$01 STA FNLEN LDX FA LDY #$60 JSR SETLFS JSR OPEN ;$F3D5 BCC DIRPRES LDA #$18 STA $D018 PLA PLA JSR CLRCH LDA #$01 JSR CLOSE JSR NODEVI JMP RESSCRN DIRPRES LDA FA JSR TALK LDA SA JSR TKSA LDY #$03 RTS DIRECTOR JSR DIRINIT DIRLINE STY $23 JSR ACPTR STA $22 LDY STATUS BNE DIREND JSR ACPTR LDY STATUS BNE DIREND LDY $23 DEY BNE DIRLINE LDX $22 JSR LINPRT LDA #$20 JSR OUTDO FILENLOP JSR ACPTR LDY STATUS BNE DIREND TAY BEQ NEXTFILE JSR OUTDO JMP FILENLOP NEXTFILE LDA #$0D JSR OUTDO LDY #$02 JMP DIRLINE DIREND JSR CLRCH ;$F642 LDA #$01 JSR CLOSE LDA #CLHERE JSR STROUT DIRCLOP LDA CLICK BEQ DIRCLOP LDA #$18 STA $D018 JMP RESSCRN DOLLAR .TEXT "$ " CLHERE .TEXT " CLICK TO" .TEXT " CONTINUE '" .BYTE 0 ; питцх дата PITCHV .BYTE 0,7,14 ; LENGTH .BYTE 6,9,12,18,24,36 .BYTE 48,72,96,144,8,12 ; VOLUME .BYTE 0,1,4,7,11,15 ; PITCHL .BYTE 0,73,139,208,25,103,185 .BYTE 16,108,206,53,163,23,147 .BYTE 21,159,60,205,114,32,216 .BYTE 156,107,70,47,37,42,63 .BYTE 100,154,227,63,177,56 .BYTE 214,141,94,75,85,126,200 .BYTE 52,198,127,97,111,172 .BYTE 126,188,149,169,252,161 .BYTE 105,140,254,194,223,88 .BYTE 52,120 ; PITCHH .BYTE 0,4,4,4,5,5,5,6,6 .BYTE 6,7,7,8,8,9,9,10,10 .BYTE 11,12,12,13,14,15,16 .BYTE 17,18,19,20,21,22,24,25 .BYTE 27,28,30,32,34,36,38,40 .BYTE 43,45,48,51,54,57,61,64 .BYTE 68,72,76,81,86,91,96,102 .BYTE 108,115,122,129 TEMPO INC SPEED LDA SPEED CMP #$0A BNE NOWRAP LDA #$00 STA SPEED NOWRAP LDY SPEED LDA TATEXT,Y STA $04CA LDA TBTEXT,Y STA $04CB LDA TCTEXT,Y STA $04CC LDA PROS,Y STA PRONOTE LDA INTS,Y STA INTMAX RTS ; темпо теьт TATEXT .BYTE 33,33,33,34,34,34,34,34 .BYTE 34,34 TBTEXT .BYTE 36,38,40,33,34,35,35,36 .BYTE 37,38 TCTEXT .BYTE 41,33,38,33,35,33,38,38 .BYTE 35,33 PROS .BYTE 0,0,0,2,3,4,5,9,19,0 INTS .BYTE 4,3,2,1,1,1,1,1,1,1 ; цлеар меморы CLR LDY #BOTMUSIC STA $FC LDA #$00 CLRLOP STA ($FB),Y INY BNE CLRLOP INC $FC LDX $FC CPX #>(TOPMUSIC+$0100) BNE CLRLOP LDA #29 CLRNAM STA NAMEOP,Y INY CPY #$20 BNE CLRNAM RTS ; яуит EXIT LDA #$0E STA 211 LDA #$0C STA 214 JSR 58732 LDA #QUITYN STA $23 JSR ERRPRINT KEYCHECK LDA $C5 CMP #25 BEQ EXITNOW CMP #39 BNE KEYCHECK JMP DISPLAY EXITNOW PLA PLA SEI LDA #IRQROM STA $0315 LDA $01 ORA #$01 STA $01 CLI LDA #147 JSR OUTDO LDA #5 JSR OUTDO LDA #21 STA $D018 LDA #$00 STA $D015 STA $D020 STA $D021 STA $C6 RTS QUITYN .TEXT "_]SWKV>[?'P?_" .BYTE 0 ; цлеар (ы/н) CLRY LDA #$0D STA 211 LDA #$0C STA 214 JSR 58732 LDA #CLRYN STA $23 JSR ERRPRINT KEYCHCLR LDA $C5 CMP #25 BEQ CLRTRANS CMP #39 BNE KEYCHCLR JMP DISPLAY CLRTRANS JSR CLR JMP DISPLAY CLRYN .TEXT "_]ENGCT>[?'P?_" .BYTE 0 ; наме роутинес PRINNAM LDA #$08 STA 211 LDA #$02 STA 214 JSR 58732 LDY #$00 LDA #NAMEOP STA $23 PRINLOP LDA ($22),Y STA $0458,Y INY CPY #$1F BNE PRINLOP RTS ; NAME LDA #$00 STA XCU LDA $C5 CMP #$40 BNE NAME NAMLOP JSR PUTCU JSR PRINNAM NAMKLOP LDY $C5 LDA KEYTAB,Y BEQ NAMKLOP CMP #$80 BEQ NAMEND CMP #$81 BNE CCHEA LDA $028D AND #$01 BEQ RIGHTC LEFTC LDA XCU BEQ NAMSLOP DEC XCU JMP NAMSLOP RIGHTC LDA XCU CMP #$1E BEQ NAMSLOP INC XCU JMP NAMSLOP CCHEA CMP #$83 BNE CCHEC LDY XCU BEQ NAMSLOP LDA #NAMEOP STA $25 MNDWN LDA ($24),Y DEY STA ($24),Y INY INY CPY #$20 BNE MNDWN DEC XCU JMP NAMSLOP CCHEC LDY XCU STA NAMEOP,Y JMP RIGHTC NAMSLOP LDA $C5 CMP #$40 BNE NAMSLOP JMP NAMLOP NAMEND LDA #$03 STA $D015 JMP DISPLAY PUTCU LDA #$07 STA $D015 LDA #$06 STA $D029 LDA #$37 STA $07FA LDA #$42 STA $D005 LDA $D010 AND #$03 STA $D010 LDA XCU ASL A ASL A ASL A CMP #$B0 BCC NOEXTRX TAX LDA $D010 ORA #$04 STA $D010 TXA NOEXTRX CLC ADC #$51 STA $D004 RTS ; реад кеыбоард дата KEYTAB .BYTE $83,$80,$81,0,0,0,0,0 .BYTE 36,25,3,37,28,21,7,0,38 .BYTE 20,6,39,5,8,22,26,40,27 .BYTE 9,41,4,10,23,24,42,11,12 .BYTE 33,15,13,17,16,0,18,14 .BYTE 0,0,0,0,0,0,0,0,0,0,0,0 .BYTE 0,34,0,0,35,29,0,19,0,0 ; репорт дисц еррор DISCERR CMP #$05 BNE READERR NODEVI LDA #28 JSR OUTDO LDA #$08 STA 211 LDA #$0C STA 214 JSR 58732 LDA #DEVNOTPR STA $23 JSR DISCERRP DISCFIN LDA #$08 STA 211 LDA #$0B STA 214 JSR 58732 LDA #BETERR STA $23 JSR ERRPRINT LDA #$08 STA 211 LDA #$0D STA 214 JSR 58732 JSR ERRPRINT LDA #$08 STA 211 LDA #$0A STA 214 JSR 58732 LDA #DISCEROC STA $23 JSR DISCERRP JMP PUTFINT READERR LDA #28 JSR OUTDO LDA #$08 STA 211 LDA #$0C STA 214 JSR 58732 LDA #BLADISC STA $23 JSR DISCERRP LDA #$09 STA 211 LDA #$0C JSR 58732 LDA #$00 STA $90 LDA FA JSR TALK LDA STATUS BEQ DEVTHERE JMP NODEVI DEVTHERE LDA #$6F STA $B9 JSR TKSA GETCOML LDX $90 BNE REEND JSR ACPTR CMP #"," BNE GETCOML PRERLOP JSR ACPTR LDX $90 BNE REEND CMP #" " BNE NODSPAC LDA #"]" JSR OUTDO JMP PRERLOP NODSPAC CMP #"," BEQ REEND CMP #$30 BCC PRERLOP CMP #$3A BCC ERRNUM CMP #$41 BCC PRERLOP CMP #$5B BCC ERRLET JMP PRERLOP ERRNUM SEC SBC #$0F JSR OUTDO JMP PRERLOP ERRLET CLC ADC #$02 JSR OUTDO JMP PRERLOP REEND JSR ACPTR CMP #$0D BNE REEND JSR UNTLK JMP DISCFIN DISCERRP LDY #$00 DEPLOP LDA ($22),Y JSR OUTDO INY CPY #$16 BNE DEPLOP RTS DISCEROC .TEXT "_]]]]]FKUE]GTTQT]]]]]_" DEVNOTPR .TEXT "_]FGXKEG]PQV]RTGUGPV]_" BLADISC .TEXT "_]]]]]]]]]]]]]]]]]]]]_" ; тыпе филенаме GETFILE LDA #$0F STA 211 LDA #$0B STA 214 JSR 58732 LDA #"M" STA FILENAM LDA #"U" STA FILENAM+1 LDA #"S" STA FILENAM+2 LDA #"." STA FILENAM+3 LDY #$04 LDA #29 CLRFNLOP STA FILENAM,Y INY CPY #$10 BNE CLRFNLOP LDA #TYPEFN STA $23 JSR ERRPRINT LDA #$0F STA 211 LDA #$0C STA 214 JSR 58732 LDA #TFNMID STA $23 JSR ERRPRINT LDA #$0F STA 211 LDA #$0D STA 214 JSR 58732 LDA #TYPELN STA $23 JSR ERRPRINT LDA #$03 STA XCU GETFK LDA $C5 CMP #$40 BNE GETFK FNAMLOP JSR FNPUTCU JSR PRINFILE FNAMKLOP LDY $C5 LDA KEYTAB,Y BEQ FNAMKLOP CMP #$80 BEQ FNAMEND CMP #$81 BNE FCCHEA LDA $028D AND #$01 BEQ FRIGHTC FLEFTC LDA XCU CMP #$03 BEQ FNAMSLOP DEC XCU JMP FNAMSLOP FRIGHTC LDA XCU CMP #$0A BEQ FNAMSLOP INC XCU JMP FNAMSLOP FCCHEA CMP #$83 BNE FCCHEC LDY XCU CPY #$03 BEQ FNAMSLOP LDA #FILENAM STA $FC INY FMNDWN LDA ($FB),Y DEY STA ($FB),Y INY INY CPY #$0D BNE FMNDWN DEC XCU JMP FNAMSLOP FCCHEC LDY XCU INY STA FILENAM,Y JMP FRIGHTC FNAMSLOP LDA $C5 CMP #$40 BNE FNAMSLOP JMP FNAMLOP FNAMEND JSR DISPLAY LDY #$04 CONVFILE LDA FILENAM,Y CMP #$1D BEQ SPACE BCC LETTER CLC ADC #$0F JMP CONCHAR LETTER CLC ADC #$3E JMP CONCHAR SPACE CLC ADC #$03 CONCHAR STA FILENAM,Y INY CPY #$10 BNE CONVFILE LDA #$03 STA $D015 RTS FNPUTCU LDA #$07 STA $D015 LDA #$06 STA $D029 LDA #$37 STA $07FA LDA #$9A STA $D005 LDA $D010 AND #$03 STA $D010 LDA XCU ASL A ASL A ASL A CLC ADC #$79 STA $D004 RTS PRINFILE LDY #$04 PRFNLOP LDA FILENAM,Y STA $0614,Y INY CPY #$0C BNE PRFNLOP RTS TYPEFN .TEXT "_HKNGPCOG_" .BYTE 0 TFNMID .TEXT "^ ^" .BYTE 0 TYPELN .TEXT "_]]]]]]]]_" .BYTE 0 ; и/о роутинес LOAD LDA #$0E STA 211 LDA #$0C STA 214 JSR 58732 LDA #LOADYN STA $23 JSR ERRPRINT KCHLOAD LDA $C5 CMP #25 BEQ LOADF CMP #39 BNE KCHLOAD JMP DISPLAY LOADF JSR REQUEST JSR CLR LDA #$01 LDX FA LDY #$01 JSR SETLFS LDA #$0F LDX #FILENAM JSR SETNAM LDA #$00 JSR LOADROM BCC NLOADERR JSR DISCERR NLOADERR JMP DISPLAY ; SAVE LDA #$0E STA 211 LDA #$0C STA 214 JSR 58732 LDA #SAVEYN STA $23 JSR ERRPRINT KCHSAVE LDA $C5 CMP #25 BEQ SAVEF CMP #39 BNE KCHSAVE JMP DISPLAY SAVEF JSR GETFILE LDA #$01 LDX FA LDY #$01 JSR SETLFS LDA #$0F LDX #FILENAM JSR SETNAM JSR GETMAXAD LDX $FB LDY $FC LDA #$B8 STA $FB LDA #$41 STA $FC LDA #$FB JSR SAVEROM BCC NSAVERR JSR DISCERR NSAVERR JMP DISPLAY GETMAXAD LDY #$00 LDA #<(TOPMUSIC+$6F) STA $FB LDA #>(TOPMUSIC+$6F) STA $FC GETMAX LDA ($FB),Y BNE THISMAX LDA $FB SEC SBC #$01 STA $FB LDA $FC SBC #$00 STA $FC JMP GETMAX THISMAX LDA $FB CLC ADC #$01 STA $FB LDA $FC ADC #$00 STA $FC RTS LOADYN .TEXT "_]NQCF>[?'P?_" .BYTE 0 SAVEYN .TEXT "_]UCXG>[?'P?_" .BYTE 0 ; гото бар GOTO LDA #$0D STA 211 LDA #$09 STA 214 JSR 58732 LDA #GOTMENU STA $23 JSR ERRPRINT LDA #$0D STA 211 LDA #$0A STA 214 JSR 58732 LDA #GOTMID STA $23 JSR ERRPRINT LDA #$0D STA 211 LDA #$0C STA 214 JSR 58732 JSR ERRPRINT LDA #$0D STA 211 LDA #$0E STA 214 JSR 58732 JSR ERRPRINT LDA #$0D STA 211 LDA #$0B STA 214 JSR 58732 LDA #GOTPLAY STA $23 JSR ERRPRINT LDA #$0D STA 211 STA 214 JSR 58732 LDA #GOTVIEW STA $23 JSR ERRPRINT LDA #$0D STA 211 LDA #$0F STA 214 JSR 58732 LDA #GOTCANC STA $23 JSR ERRPRINT GOTKLOP LDA $C5 CMP #41 BEQ PLAYFROM CMP #31 BEQ VIEWFROM CMP #20 BEQ CANCFROM JMP GOTKLOP CANCFROM JMP DISPLAY PLAYFROM JSR GETBARNO JSR MSTART SEI LDA $22 STA CURRENT LDA $23 STA CURRENT+1 CLI JMP PLAYLOOP VIEWFROM JSR GETBARNO LDA $22 STA ADL LDA $23 STA ADL+1 JMP DISPLAY GETBARNO LDA #$0B STA 211 STA 214 JSR 58732 LDA #GETBTXT STA $23 JSR ERRPRINT LDA #$0B STA 211 LDA #$0C STA 214 JSR 58732 LDA #GOTMID STA $23 JSR ERRPRINT LDA #$0B STA 211 LDA #$0D STA 214 JSR 58732 LDA #BLANKGOT STA $23 JSR ERRPRINT BARKEY LDX $C5 LDA KEYTAB,X CMP #$80 BEQ GOTBNO CMP #33 BCC BARKEY CMP #43 BCS BARKEY PHA LDA $0619 STA $0618 LDA $061A STA $0619 PLA STA $061A STBK LDA $C5 CMP #$40 BNE STBK JMP BARKEY GOTBNO LDA $0619 SEC SBC #33 AND #$0F ASL A ASL A ASL A ASL A ADC $061A SEC SBC #33 STA $24 LDA $0618 SEC SBC #33 STA $25 LDA #<(BOTMUSIC-8) STA $22 LDA #>(BOTMUSIC-8) STA $23 LDY #$00 JMP BARLIN FINDBARS LDA ($22),Y CMP #$FC BCS BARLIN NEXBAR LDA $22 CLC ADC #$08 STA $22 LDA $23 ADC #$00 STA $23 CMP #>(TOPMUSIC+$0100) BNE FINDBARS PLA PLA PLA PLA LDY #$00 STY FUNCTION LDA CLFUNCS,Y RBKLOOP STA POKBHERE+1 LDA CLFUNCS+1,Y STA POKBHERE+2 LDA #$00 POKBHERE STA $1234 INY INY LDA CLFUNCS,Y CMP #$FF BNE RBKLOOP JSR DISPLAY LDA #NOBART STA $23 JSR REPORTER JMP CLSTOP BARLIN SED LDA $24 SEC SBC #$01 STA $24 LDA $25 SBC #$00 STA $25 CLD BNE NEXBAR LDA $24 BNE NEXBAR GOTMAD LDA $22 CLC ADC #$08 STA $22 LDA $23 ADC #$00 STA $23 RTS NOBART .TEXT "_]DCT]FQGU]PQV]GZKUV]_" .BYTE 0 GETBTXT .TEXT "_]GPVGT]DCT]_" .BYTE 0 BLANKGOT .TEXT "_]]]]!!!]]]]_" .BYTE 0 GOTMENU .TEXT "_]IQVQ]OGPW]_" .BYTE 0 GOTMID .TEXT "^ ^" .BYTE 0 GOTPLAY .TEXT "_>R?NC[]HTQO_" .BYTE 0 GOTVIEW .TEXT "_>X?KGY]HTQO_" .BYTE 0 GOTCANC .TEXT "_]>E?CPEGN]]_" .BYTE 0 ; енжелопе десигнер ENVEL LDA #$00 STA FUNCTION JSR DISPENV ENVSC LDA CLICK BNE ENVSC ENVCL LDA CLICK BEQ ENVCL LDA XP LDX XPB BNE NOSUBEX SEC SBC #$18 NOSUBEX LSR A LSR A LSR A TAX LDA XPB BEQ NOEXX TXA CLC ADC #$1D TAX NOEXX STX XCH LDA YP SEC SBC #$32 LSR A LSR A LSR A STA YCH BNE NOQUE LDA XCH BNE NOQUE RESSCRN LDY #$00 STY $22 STY $24 LDA #$30 STA $23 LDA #$D8 STA $25 RESCOLS LDA ($22),Y STA ($24),Y INY BNE RESCOLS INC $23 INC $25 LDA $23 CMP #$34 BNE RESCOLS JMP DISPLAY NOQUE LDA YCH AND #$01 BNE MISSEN LDA YCH BNE NOTMYT MISSEN JMP ENVSC NOTMYT LDA YCH CMP #$09 BCC ADSR CMP #$0C BNE NOWAVS JMP WAVESET NOWAVS CMP #$14 BNE NOCHA LDA XCH CMP #$13 BNE NOTW1 LDA #$00 STA ENVSLC NOTW1 CMP #$1F BNE NOTW2 LDA #$01 STA ENVSLC NOTW2 JMP DENV NOCHA CMP #$10 BEQ PULSET JMP ENVSC ADSR JSR CONXP LDY ENVSLC LDA YCH CMP #$02 BEQ ATTSET CMP #$04 BEQ DECSET CMP #$06 BNE RELSET LDA SR,Y AND #$0F STA $22 TXA ASL A ASL A ASL A ASL A CLC ADC $22 STA SR,Y JMP DENV DECSET LDA AD,Y AND #$F0 STX $22 CLC ADC $22 STA AD,Y JMP DENV ATTSET LDA AD,Y AND #$0F STA $22 TXA ASL A ASL A ASL A ASL A CLC ADC $22 STA AD,Y JMP DENV RELSET LDA SR,Y AND #$F0 STX $22 CLC ADC $22 STA SR,Y JMP DENV PULSET JSR CONXP LDY ENVNUM TXA STA PULSE,Y JMP DENV WAVESET LDA XCH CMP #$0D BCC MISWAV LDX ENVNUM CMP #$15 BCS NOTRI LDA #$11 STA WAVES,X JMP DENV NOTRI CMP #$1B BCS NOSAW LDA #$21 STA WAVES,X JMP DENV NOSAW CMP #$21 BCS NOPUL LDA #$41 STA WAVES,X JMP DENV NOPUL LDA #$81 STA WAVES,X DENV JSR ENVUPD MISWAV JMP ENVSC CONXP LDA XCH CMP #$13 BCC MISSADSR SEC SBC #$13 CMP #$10 BCS MISSADSR TAX RTS MISSADSR PLA PLA JMP ENVSC DISPENV LDY #$00 STY $22 STY $24 LDA #$D8 STA $23 LDA #$30 STA $25 ELOOP LDA ($22),Y STA ($24),Y INY BNE ELOOP INC $23 INC $25 LDA $23 CMP #$DC BNE ELOOP ENVUPD LDY #$00 STY $22 STY $24 LDA #$D8 STA $23 LDA #$30 STA $25 LDA #$00 CLCENV STA ($22),Y INY BNE CLCENV INC $23 INC $25 LDX $23 CPX #$DC BNE CLCENV LDA #$2C STA $23 LDA #$04 STA $25 LDY #$00 STY $22 STY $24 ENDISPL LDA ($22),Y STA ($24),Y INY BNE ENDISPL INC $23 INC $25 LDA $23 CMP #$30 BNE ENDISPL LDX ENVSLC LDA AD,X AND #$0F TAY LDA #$BC STA $04B3,Y LDA AD,X LSR A LSR A LSR A LSR A TAY LDA #$BC STA $0463,Y LDA SR,X AND #$0F TAY LDA #$BC STA $0553,Y LDA SR,X LSR A LSR A LSR A LSR A TAY LDA #$BC STA $0503,Y LDA PULSE,X TAY LDA #$BC STA $0693,Y LDA ENVX,X TAY LDA #$06 STA $DB33,Y LDA WAVES,X LDX #$00 STA $22 GETWNO LDA WAVATAB,X CMP $22 BEQ GOTWNO INX JMP GETWNO GOTWNO LDA WAVBTAB,X TAY COLWAVE LDA #$06 STA $D9ED,Y INY TYA CMP WAVBTAB+1,X BNE COLWAVE JMP CONTROL ; важеформ ленгтхс WAVATAB .BYTE $11,$21,$41,$81 WAVBTAB .BYTE 0,9,15,21,26 ENVX .BYTE 0,12 ; дынамицс роутинес DYNAM LDA DYNTYPE CLC ADC #$01 AND #$07 STA DYNTYPE DYNPRT LDA DYNTYPE CLC ADC #114 STA $060E RTS ; филе реяуестор MUS .TEXT "MUS." REQTIT .TEXT " PLEASE SELECT ONE OF " .TEXT "THE FILES BELOW: " .TEXT " OR CLICK HERE TO " .TEXT "EXIT WITHOUT LOADING" .TEXT " '" .TEXT "цццццццццццццццццццц" .TEXT "цццццццццццццццццццц " .BYTE 0 REQUEST JSR DIRINIT LDY #$00 REQINTRO LDA REQTIT,Y JSR OUTDO INY CMP #$00 BNE REQINTRO LDA #$00 STA $FB LDA #$C0 STA $FC REQRESET LDX #$00 REQWAIT JSR ACPTR LDY STATUS BNE ENDOFD CMP MUS,X BNE REQRESET INX CPX #$04 BNE REQWAIT LDA #"" JSR OUTDO LDY #$00 READNAME JSR ACPTR STA ($FB),Y JSR OUTDO INY CPY #$08 BNE READNAME LDA $FB CLC ADC #$08 STA $FB LDA $FC ADC #$00 STA $FC LDA #"'" JSR OUTDO LDA #$20 JSR OUTDO JSR OUTDO JMP REQRESET ENDOFD JSR CLRCH LDA #$01 JSR CLOSE REQCLICK LDA CLICK BEQ REQCLICK LDA XP LDX XPB BNE REQNOS SEC SBC #$18 REQNOS LSR A LSR A LSR A TAX LDA XPB BEQ REQNOEX TXA CLC ADC #$1D TAX REQNOEX STX XCH LDA YP SEC SBC #$32 LSR A LSR A LSR A STA YCH CMP #$01 BNE REQNOIT PLA PLA LDA #$18 STA $D018 JMP RESSCRN REQNOIT CMP #$04 BCC REQCLICK LDX XCH LDA XNAM,X CMP #$04 BEQ REQCLICK STA $FD LDA YCH SEC SBC #$04 ASL A ASL A CLC ADC $FD STA $FD LDA #$00 STA $FE ASL $FD ASL $FD ROL $FE ASL $FD ROL $FE LDA $FE CLC ADC #$C0 STA $FE LDY #$00 CMP $FC BEQ REQFINE BCC REQTRANS JMP REQCLICK REQFINE LDA $FD CMP $FB BCC REQTRANS JMP REQCLICK REQTRANS LDA ($FD),Y STA FILENAM+4,Y INY CPY #$08 BNE REQTRANS LDA #$18 STA $D018 JSR RESSCRN LDA #"M" STA FILENAM LDA #"U" STA FILENAM+1 LDA #"S" STA FILENAM+2 LDA #"." STA FILENAM+3 RTS ; кеыбоард схортцутс CTRL LDX #$00 LDA $C5 CTRLLOP CMP KEYSHOR,X BEQ GOTCTRL INX INX INX CPX #54 BCC CTRLLOP CMP #44 BNE DOTGOT JMP DOTCYCLE DOTGOT LDA #$00 STA DOTKEY JMP DORMANT GOTCTRL LDA KEYSHOR+1,X STA $22 LDA KEYSHOR+2,X STA $23 JSR SETVARS JMP DORMANT KEYSHOR .BYTE 62,SHARP .BYTE 9,FLAT .BYTE 14,NATR .BYTE 17,NATN .BYTE 56,BARL .BYTE 59,BARD .BYTE 8,BARR .BYTE 11,RBAR .BYTE 16,SEMI .BYTE 19,QUAV .BYTE 24,CROT .BYTE 27,MINI .BYTE 32,BREV .BYTE 35,TRIP .BYTE 40,INS .BYTE 43,DEL .BYTE 10,REST .BYTE 13,NOTE XNAM .BYTE 0,0,0,0,0,0,0,0,4,4 .BYTE 1,1,1,1,1,1,1,1,4,4 .BYTE 2,2,2,2,2,2,2,2,4,4 .BYTE 3,3,3,3,3,3,3,3,4,4