PROTRACKER372 PT3D H
pt3D C��tА�Б№Ц MAIN "",#C6 BEGcur
LD A,(EPAT) CALL iPATq CALL XPP2 LD A,C CALL ICHNQ LD A,(CURY),(beg1),A XOR A JR IBEGq
DECBEG2 DECBEG1 LD A,-1
JR IBEG1Q
INCBEG2 INCBEG1 LD A,1 IBEG1Q LD HL,ARX
BIT 5,(HL)
IBEGq LD HL,beg1,DE,#2E0B
JZ $+8
IBEG2q LD HL,beg2,DE,#380B
ADD A,(HL) AND 63 LD (HL),A
toOO
LD BC,#2F0A INC B SUB C JNC $-2 ADD A,C PUSH AF LD A,B CALL PRADD POP AF
toOOQ INC D
ADD A,"0 JP PRADD
prpatl
LD A,(PATLEN) INC A LD DE,#0C07 JR toOO
toOOOO
PUSH DE,IX LD IX,OOOO LD DE,1000 CALL toOPP LD DE,100 CALL toOPP LD DE,10 CALL toOPP LD (IX),L POP IX,DE LD L,"0 LD A,(OOOO) ADD A,L CALL PRADD INC D LD A,(OOOO+1) ADD A,L CALL PRADD INC D LD A,(OOOO+2) ADD A,L CALL PRADD LD A,(OOOO+3) JR toOOQ
toOPP
LD B,-1 OR A INC B SBC HL,DE JNC $-3 ADD HL,DE LD (IX),B INC IX RET
POSFON TEMPO=$+1
LD A,4 LD DE,#4106 CALL PRF8 LD A,(LENG) LD E,#66 CALL PRF8 LD A,(LOOP) LD E,#86 CALL PRF8 LD HL,TTITLE LD DE,#60C LD B,32 CALL PRTXADD LD HL,TAUTHOR LD DE,#60D LD B,32 CALL PRTXADD
PATFON
LD A,(POS) PUSH AF LD DE,#4126 CALL PRF8 POP AF LD L,A LD H,'TPOSS LD A,(HL) LD DE,#4146 CALL PRF8 CALL prpatl LD A,(EPAT) LD DE,#41C6
PRF8 LD B,#F8 PR88 PUSH DE
LD L,A,H,0 LD C,H ADD HL,HL ADD HL,HL ADD HL,HL ADD HL,BC LD A,(pg) PUSH AF
PR88PG=$+1
LD A,pg4 CALL OUTME DUP 5 LD A,(HL),(DE),A INC D,L EDUP LD A,(HL),(DE),A POP AF,DE INC E JP OUTME
PR7D LD B,'FNTNOTE
JR PR88
INCTMP
LD A,(TEMPO) INC A AND 63 RET Z
ITMPQ LD (TEMPO),A
LD (temp1),A LD DE,#4106 JR PRF8
DECTMP
LD A,(TEMPO) DEC A RET Z JR ITMPQ
INCPOSU LD A,(ESNGon)
OR A JP Z,INCEPAT CALL ROLnxPO JR IPOSQA
INCPOS
LD A,(POS) INC A
IPOSQ LD (POS),A IPOSQA LD A,(POS)
PUSH AF LD A,(ESNGon) OR A JNZ IPOSPAT POP AF LD DE,#4126 CALL PRF8 LD HL,(POS) LD H,'TPOSS LD A,(HL) LD DE,#4146 JR PRF8
DECPOSU LD A,(ESNGon)
OR A JP Z,DECEPAT SCF CALL UPRnxPO JR IPOSQA
DECPOS
LD A,(POS) DEC A JR IPOSQ
IPOSPAT POP AF
LD L,A LD H,'TPOSS LD A,(HL) LD L,A LD (EPAT),A INC H LD A,(HL) LD (PATLEN),A CALL PATFON
IPOSPATQ
XOR A LD (CURY),A INC A ; LD (tempCNT),A ; JP PRPATUU ;иначе глючит перекл.на лету в режиме TS
- 8
JPITEM
LD A,(NOPKA) OR A RET Z LD D,0;A LD A,(ITEM) CP -1 RET Z DEC A ADD A,A LD E,A CALL RE ;повторное не страшно?
useadr=$+1
LD HL,MENUUSE ADD HL,DE LD A,(HL) INC HL LD H,(HL) LD L,A JP (HL)
STROKA
- A=line#
- E=scrY
- B=pat
PUSH BC,AF ;AND 63 LD C,A LD A,E LD (STROKY),A EXA PUSH DE CALL GETnADR PUSH HL POP IX POP DE LD D,0 CALL DE2SCR EXD LD A,C INC D LD B,'FNTDEC CALL PR88 INC E LD A,(IX) OR (IX+1) JNZ $+7 LD A,pg7,(PR88PG),A INC E LD A,(IX) CALL PRF8 ;NZ,NC LD A,(IX+1) CALL PRF8 INC E LD A,pg7,(PR88PG),A LD A,(IX+2) CALL PRF8 INC E LD A,16+4 EXA LD BC,3 LD A,C
STROK0 PUSH AF
ADD IX,BC LD A,(IX) AND #7F LD BC,13 JZ sTRNbl DEC C DEC A CP 96 JZ sTRNres INC B SUB C JNC $-2 ADD A,C PUSH BC CALL PR7D POP AF JR sTRNQ
sTRNbl sTRNres LD A,C
CALL PR7D LD A,C
sTRNQ
ADD A,14 CALL PR7D LD A,(IX+3) CALL PRF8 ;XX.. PUSH DE EXA LD D,A ADD A,10+6 EXA LD A,(IX) RLA JNC STRnG LD A,(IX+3) RRA RRA RRA RRA AND 15 ADD A,"G
STROKY=$+1
LD E,0 CALL PRADD
STRnG POP DE
LD A,(IX+4) CALL PRF8 INC E LD A,(IX+1) CALL PRF8 LD A,(IX+2) CALL PRF8 INC E LD BC,5 POP AF DEC A JP NZ,STROK0 LD A,pg4 LD (PR88PG),A POP AF,BC RET
- 1
TSTFIRH
HALT
TSTFIRE CALL CANCEL
JNC TST1 LD A,(NOPKA) OR A RET Z LD A,(ARX)
TSTXMIN=$+1
CP 0 RET C
TSTXMAX=$+1
CP 0 JNC TST1 LD A,(ARXY)
TSTYMIN=$+1
CP 0 RET C
TSTYMAX=$+1
CP 0
TST1 CCF
RET
LD B,"-
NEGHL
XOR A SUB L LD L,A SBC A,A SUB H LD H,A RET
CLORNSM CALL CLORNS CLSMPS
XOR A CALL CLSMP INC A AND 31 JNZ $-6 RET
CLORNS
XOR A CALL CLORN INC A AND #F JNZ $-6 LD HL,TORNSZ+1 LD B,6 LD A,B INC HL,HL LD (HL),3 DJNZ $-4 LD HL,TDEFORN
CLORNS1 EXD
PUSH AF CALL HLOR3 POP AF EXD LDI LDI LDI DEC A JNZ CLORNS1 RET
CLSMP
PUSH AF ADD A,'SMPS LD H,A SUB 'SMPS+#F SUB 1 CALL OUT4 LD BC,252 LD L,B JNZ CLSMPnG LD (HL),264 ;сэмпл G INC HL ;=тихая огибающая LD (HL),'264 ;(для орнамента F) JR CLSMPqG
CLSMPnG
LD (HL),B INC HL LD (HL),B
CLSMPqG INC HL
LD (HL),64 JNC $+4 LD (HL),192 ;сэмпл F = --E INC L LD (HL),B INC L EXD LD H,D LD L,B LDIR LD L,3 LD (HL),15 POP AF LD L,A ADD HL,HL LD H,'TSMPSZ LD (HL),0 INC L LD (HL),1 RET
CLORN
PUSH AF LD HL,TORNSZ+1 ADD A,A ADD A,L LD L,A CP #F*2+TORNSZ+1 CALL OUT4 LD BC,63 LD (HL),1 DEC HL LD (HL),B CALL _orn LD (HL),B JNZ $+4 LD (HL),-96 LD D,H LD E,L INC E LDIR POP AF RET
DECOMS
LD A,1,(yedecom),A LD A,"C",(extS),A DEC A LD (extF),A
DISKS
LD (IY),-1 LD (IY+48),8 LD A,201,(MHEXFNTpg),A XOR A LD (#5CF9),A ;LD L,A,H,A,(#5D0F),HL ;в DOS уже есть LD A,9,(#5D06),A LD (DISKSP),SP LD HL,DISKCOO LD DE,DISKUSE LD BC,mDISK CALL WINDOW LD HL,tDISK LD DE,0 CALL PRMENU LD HL,#5CDD LD DE,#B06 LD B,8 CALL PRTXADD
LD A,(comped) OR A JR Z,DISKnsz LD HL,tSZ LD DE,0 CALL PRMENU LD HL,(SNGLEN) LD DE,#1500 CALL PRHL
DISKnsz
LD A,(catH) INC A CALL Z,READCAT CALL PRCATEI
CATLOOP
CALL RESHALT CALL NZ,REREAD CALL JPITEM CALL USEBAR CALL TSTFIRE JNC CATLOOP
DISKQ movd0a0=$+1
LD A,0 OR A JZ DSKQnMV CALL OUT7 LD HL,ld000 LD DE,la000 LD BC,#2000 LDIR XOR A LD (movd0a0),A
DSKQnMV;LD A,'IMVEC
;LD I,A ;IM 2
DISKSP=$+1
LD SP,0 LD A,205,(MHEXFNTpg),A CALL DOWNMER CALL CLOSWIN LD A,"S",(extS),A LD A,"F",(extF),A XOR A LD (comped),A LD (yedecom),A CALL MKSCROL CALL POSFON CALL PRPAT JR COPYFRQ IFN set
SETUP
LD HL,SETUCOO LD DE,SETUUSE LD BC,mSETUP CALL WINDOW LD HL,tSETUP LD DE,0 CALL PRMENU CALL PRSETS
SETUPP0
CALL HALTER CALL JPITEM CALL TSTFIRE JNC SETUPP0 CALL SETCOLS CALL CLOSWIN CALL PRPAT ENDIF
COPYFRQ
CALL OUT6
FRQn=$+1
LD DE,1 LD HL,NT_DATA ADD HL,DE,HL,DE,HL,DE LD BC,T_ LD E,(HL) INC HL EXD ADD HL,BC LD A,(DE),(COPF3),A INC DE LD A,(DE) ADD A,C LD C,A ADC A,B SUB C LD B,A LD DE,FrTab PUSH BC,DE LD B,12
COPF1 PUSH BC
LD C,(HL) INC HL LD B,(HL) PUSH HL,DE EXD LD DE,23 LD HX,8
COPF2 SRL B
RR C LD A,C
COPF3 ADC A,D ;=ADC 0
LD (HL),A INC HL LD A,B ADC A,D LD (HL),A ADD HL,DE DEC HX JNZ COPF2 POP DE,HL INC DE,DE INC HL POP BC DJNZ COPF1 POP HL,DE
CORR_1 LD A,(DE)
OR A RET Z INC DE RRA PUSH HL PUSH AF ADD A,A LD C,A ADD HL,BC POP AF INC (HL) JNC $+4 DEC (HL),(HL) POP HL JR CORR_1
IFN set
suPOI LD HL,poion
JR suCPL
suKJ XOR A
IN A,(31) CPL AND #F RET Z LD HL,joy JR suCPL
suSND LD A,(SHOLK)
OR A LD A,201 JZ $+3 XOR A LD (SHOLK),A JR PRSETS
suPLAY LD HL,playon suCPL LD A,(HL)
CPL LD (HL),A JR PRSETS
suPAP1 LD HL,pap1
JR suATR
suINK2 LD HL,ink2
JR suATR
suPAP2 LD HL,pap2
JR suATR
suBORD LD HL,bord
JR suATR
suFRQ LD HL,FRQn
INC (HL) RES 2,(HL) JR PRSETS
suINK1 LD HL,ink1 suATR LD A,(HL)
ADD A,8 AND 56 LD (HL),A
PRSETS
LD BC,(FRQn-1) INC B LD DE,12 LD HL,tPTST-12 ADD HL,DE DJNZ $-1 LD DE,#1301 CALL PRMENU LD A,(poion) LD HL,tON OR A JNZ $+5 LD HL,tOFF LD DE,#1602 CALL PRMENU LD HL,#5971 LD BC,32 LD A,(ink1),(HL),A INC L LD A,(pap1),(HL),A ADD HL,BC LD A,(pap2),(HL),A DEC L LD A,(ink2),(HL),A LD A,(bord),(#59B2),A LD A,(SHOLK) LD HL,tON OR A JZ $+5 LD HL,tOFF LD DE,#1407 CALL PRMENU LD A,(joy) LD HL,tON OR A JNZ $+5 LD HL,tOFF LD DE,#1909 CALL PRMENU LD A,(playon) OR A LD HL,tALL JNZ $+5 LD HL,tNOTE LD DE,#1408 JP PRMENU ENDIF
- 1+?
SETCOLS
LD HL,ink1 LD A,(HL) INC HL RRCA RRCA RRCA OR (HL) LD L,A,H,A LD (col1),HL LD HL,ink2 LD A,(HL) INC HL RRCA RRCA RRCA OR (HL) LD L,A,H,A LD (col2),HL LD A,(bord) RRCA RRCA RRCA OUT (-2),A RET
EDFILE
LD HL,#5CDD LD DE,#B06 LD A,8 CALL EDTXT JP WAITNOK
SAVSMP
LD HL,TSSMP,DE,#C01 CALL PRMENU LD A,"s",(#5CE5),A LD C,#12 CALL DOS CALL OUT4 LD A,(smp) PUSH AF ADD A,'SMPS LD H,A LD DE,BUF LD BC,256 LD L,C LDIR POP AF ADD A,A LD L,A,H,'TSMPSZ LDI LDI LD HL,BUF LD DE,258
DOSb
LD C,#B
DOSbQ CALL DOS
LD HL,#5D0F,A,(HL),(HL),0 OR A JZ $+4 OUT (-2),A LD A,-1,(catH),A JP DISKQ
SAVORN
LD HL,TSORN,DE,#B01 CALL PRMENU LD A,"o",(#5CE5),A LD C,#12 CALL DOS CALL OUT4 CALL HLORN LD DE,BUF,BC,64 LDIR LD H,'TORNSZ,L,A LDI LDI LD HL,BUF,DE,66 JR DOSb
SAVPAT
LD HL,TSPAT,DE,#B01 CALL PRMENU
CURY=$+1 EPAT=$+2
LD BC,0,C,0 CALL GETnADR PUSH HL LD A,"p",(#5CE5),A LD C,#12 CALL DOS POP HL LD DE,#480 JR DOSb
SAVCOMP
CALL OUT7 LD C,#12 IFN cmpilmnu LD A,(plyrON) OR A LD HL,plaer,A,"C JNZ $+7 ENDIF LD HL,mod,A,"m LD (#5CE5),A PUSH HL CALL DOS POP HL LD DE,(SNGLEN) LD C,#B CALL DOS LD C,#A CALL DOS LD A,C PUSH AF LD C,8 CALL DOS LD HL,(SNGST),(#5CE6),HL POP AF LD C,9 IF0 alasm JP DOSbQ ELSE CALL DOS LD A,-1,(catH),A LD HL,#5D0F,A,(HL),(HL),0 OR A JZ COMPOK OUT (-2),A JP DISKQ
COMPOK
LD HL,RESALM LD BC,#80 LD DE,#5B80 LDIR CALL #5B80 JP DISKQ ENDIF
SAVE comped=$+1
LD A,0 OR A JNZ SAVCOMP CALL EXB0 LD A,40 ;NOKILL CALL cMPILE PUSH HL,DE CALL EXB0 CALL OUT7 LD C,#12 LD A,"m",(#5CE5),A CALL DOS POP DE,HL JP DOSb
CATUP
LD A,(cattop) DEC A RET M LD (cattop),A JR PRCATEI
CATDN
LD A,(cattop) INC A ADD A,7
catH=$+1
CP 255 RET NC SUB 7 LD (cattop),A
- 2
PRCATEI
JP PRCAT
DESCADR
LD L,A,H,0,E,L,D,H ADD HL,HL ADD HL,HL ADD HL,DE ADD HL,HL LD DE,CATfilt ADD HL,DE RET
LDORN
LD HL,TLORN,DE,#A01 CALL PRMENU CALL OUT4 LD HL,BUF PUSH HL LD (LDADR),HL CALL LDFILE CALL HLORN EXD POP HL LD BC,64 LDIR LD D,'TORNSZ
LDORNQ LD E,A
LDI LDI JP DISKQ
LDSMP
LD HL,TLSMP,DE,#B01 CALL PRMENU CALL OUT4 LD HL,BUF PUSH HL LD (LDADR),HL CALL LDFILE LD A,(smp) PUSH AF ADD A,'SMPS LD D,A POP AF ADD A,A POP HL LD BC,256 LD E,C LDIR LD D,'TSMPSZ JR LDORNQ
LOAD
LD A,(ITEM) SUB 9 LD C,A,A,(cattop) ADD A,C CALL DESCADR LD DE,#5CDD,BC,9 LDIR LD C,(HL)
yedecom=$+1
LD A,0 DEC A JP Z,DECOM DEC HL LD A,(HL) CP "o JZ LDORN CP "S JZ LDST CP "m JZ LDSNG CP "F JZ LDSTP CP "p JZ LDPAT CP "s JZ LDSMP CP "M RET NZ CALL OUT7 LD HL,mod,(LDADR),HL CALL LDFILE DI CALL EXB0 CALL LDPT2PP CALL EXB0 LD IY,iy EI JR ex9BQ
LDST
CALL MOVD0A0 CALL LDFILE CALL LDSTPP JR ex9BQ
LDSTP
CALL MOVD0A0 LD (LDADR),HL CALL LDFILE LD A,-1,(ksaON),A,(STand),A CALL LDKSAPP XOR A LD (ksaON),A LD A,#F,(STand),A
ex9BQ LD A,(TPOSS),(EPAT),A
JP DISKQ
LDPAT
LD A,C CP "t JZ LDSNG LD HL,TLPAT,DE,#B01 CALL PRMENU LD A,(EPAT),B,A,C,0 CALL GETnADR LD (LDADR),HL CALL LDFILE JP DISKQ
LDSNG
CALL OUT7 LD HL,mod IFN tstPT PUSH HL ENDIF LD (LDADR),HL CALL LDFILE LD HL,TPROTR IFN tstPT POP DE LD B,13
LDSNGCP LD A,(DE)
CP (HL) JNZ PRSORRY INC DE INC HL DJNZ LDSNGCP ENDIF
LDSNGQ DI
CALL EXB0 CALL LDPT3PP CALL EXB0 EI XOR A LD (POS),A LD A,(TPOSS) LD (EPAT),A JP DISKQ
PRSORRY LD HL,TSORRY
JP PRDISKQ
DOSTSPP LD (#5C3D),SP
JP #3D13
- 1
DOSTEST
CALL DOSTSPP LD A,#C9,(#5CC2),A LD A,'IMVEC,I,A IM 2 EI LD A,(#5D0F) INC A JZ DOSTSOK LD A,(iy) INC A RET Z
DOSTSOK LD HL,TDISKER
LD A,(#5D0F) CP -1 JNZ $+5 LD HL,TNOFILE LD (IY),-1
PRDISKQ LD DE,#601
CALL PRMENU ;LD B,50 ;HALT ;DJNZ $-1 JP DISKQ
LDFILE
LD C,#A CALL DOS LD A,C LD C,8 CALL DOS LD DE,(#5CE8)
LDADR=$+1
LD HL,mod LD A,3 LD C,#E
DOS
IM 1 PUSH AF,HL LD A,#3F,I,A LD HL,0,(#5D0F),HL LD A,#C3,(#5CC2),A LD HL,ONERR,(#5CC3),HL POP HL,AF PUSH IX CALL DOSTEST POP IX RET
ONERR EX (SP),HL
PUSH AF LD A,H CP #D JZ ONERRIA POP AF EX (SP),HL RET
ONERRIA POP HL
POP HL POP HL POP HL POP HL CALL msgRIA
ONERIA0 LD A,#FB
IN A,(-2) LD B,"R BIT 3,A JZ ONERIAQ LD A,#DF IN A,(-2) LD B,"I BIT 2,A JZ ONERIAQ LD A,#FD IN A,(-2) RRCA LD B,"A JC ONERIA0
ONERIAQ PUSH AF
CALL CLOSWIN
OLDPG=$+1
LD A,0 CALL OUTME POP AF LD HL,#3F7E EX (SP),HL JP #3D2F
msgRIA
PUSH AF LD A,(pg),(OLDPG),A LD BC,mDISKER CALL WINDUM LD HL,tDISKER LD DE,0 CALL PRMENU POP AF RET
REREAD
SUB "1 RET C CP 4 RET NC LD (23833),A LD (23798),A LD (23800),A LD (23801),A CALL drive LD C,1 CALL DOS
READCAT
LD A,8,(DSKopts),A LD HL,CATfilt LD DE,CATfilt+1 LD (HL),32 LD B,1;C,#48 LDIR LD A,8,(catopts),A XOR A LD (catH),A LD (cattop),A CALL PRCAT LD HL,CATdos LD DE,0 LD BC,#805 CALL DOS LD IX,CATdos LD DE,CATfilt XOR A EXA LD B,128
RDCAT0 PUSH BC
LD BC,7 LD A,(IX) OR A JZ RDCATQ-1 DEC A JZ RDBADXT LD HL,FILEXTS LD A,(IX+8) CPIR JNZ RDBADXT PUSH IX POP HL LD C,10;9 LDIR EXA INC A EXA
RDBADXT LD C,16
ADD IX,BC POP BC DJNZ RDCAT0 PUSH BC POP BC
RDCATQ EXA
LD (catH),A LD C,8 CP C JC $+3 LD A,C LD (catopts),A ADD A,C LD (options),A LD (DSKopts),A XOR A LD (cattop),A
PRCAT
LD A,(cattop) CALL DESCADR
catopts=$+1
LD A,8 LD B,A OR A JZ pRCATQ LD DE,#1504
PRCAT0 PUSH BC,DE
LD B,8 CALL PRTXADD INC D,B CALL PRTXT INC HL POP DE,BC INC E DJNZ PRCAT0
pRCATQ JP CATBAR DECPAT
LD A,-1 JR IPATQ
INCPAT LD A,1 IPATQ LD HL,(POS),H,'TPOSS
ADD A,(HL) JP P,$+5 LD A,PATS-1 CP PATS JC $+3 XOR A LD HL,(POS),H,'TPOSS LD (HL),A,C,A LD A,(ESNGon) OR A LD A,C LD DE,#4146 JP Z,PRF8 LD (EPAT),A INC H LD L,C LD A,(HL),(PATLEN),A CALL PATFON JP IPOSPATQ;PRPAT ;v3+698
INCLENG
LD A,(LENG) INC A JNZ $+3 INC A
ILENQ LD (LENG),A
LD DE,#4166 JP PRF8
DECLENG LD A,(LENG)
DEC A JNZ ILENQ DEC A JR ILENQ
INCLOOP
LD A,(LOOP) INC A
ILOOPQ LD (LOOP),A
LD DE,#4186 JP PRF8
DECLOOP LD A,(LOOP)
DEC A JR ILOOPQ
INCVOL VOL=$+1
LD A,#F INC A AND #F RET Z
IVOLQ LD (VOL),A
PUSH AF LD DE,#41A6 CALL PRF8 POP AF ADD A,A ADD A,A ADD A,A ADD A,A LD (glovol),A RET
DECVOL LD A,(VOL)
DEC A RET M JR IVOLQ
INCEPAT
LD A,(EPAT) INC A LD B,0
IEPATQ CP PATS
JC $+3 LD A,B LD (EPAT),A PUSH AF LD HL,TPATSZ ADD A,L LD L,A LD A,(HL) LD (PATLEN),A LD A,(ESNGon) OR A JNZ IESNG CALL prpatl POP AF LD DE,#41C6 CALL PRF8
iEPATQQ
JP IPOSPATQ;PRPAT ;v3+698
DECEPAT LD A,(EPAT)
DEC A LD B,PATS-1 JR IEPATQ
IESNG LD HL,(POS),H,'TPOSS
POP AF LD (HL),A CALL PATFON JR iEPATQQ
CPLm
LD A,(HL) XOR -1 LD (HL),A LD HL,tON RET Z LD HL,tOFF RET
AUTOON
LD HL,auto CALL CPLm LD DE,#A0A JR NXDIVQ
ENVON
LD HL,aenv CALL CPLm LD DE,#A0B JR NXDIVQ
NXTDIV
LD A,127 IN A,(-2) RRA RRA CALL C,CANCEL2 LD HL,div LD A,(HL) INC A JC $+4 SUB 2 AND 7 LD (HL),A LD D,A ADD A,A ADD A,D LD E,A LD D,0 LD HL,DIVS ADD HL,DE LD DE,#F0B
NXDIVQ JP PRMENU MKSCROL
CALL OUT7 LD HL,scrolin LD DE,_d000 PUSH DE LD BC,scroLEN LDIR POP HL PUSH HL LD BC,scroSIZ LDIR EXD LD (HL),#C3 INC HL LD (HL),scrolQ INC HL LD (HL),'scrolQ INC HL LD (scrol2J),HL POP DE PUSH HL PUSH DE LD BC,scroSIZ+scroLEN EXD LDIR EXD ;# LD (HL),#C3 INC HL LD (HL),scrol2Q INC HL LD (HL),'scrol2Q POP IX LD HL,#5103 LD DE,#49E0 LD C,8
MSCR0 LD B,6 MSCR1 CALL MscrPP
CALL DDE,DHL DJNZ MSCR1 CALL DDE,DHL INC D,H DEC C JNZ MSCR0 POP IX LD HL,#56C3 LD DE,#56E0 LD C,8
MSCR2 LD B,6 MSCR3 CALL MscrPP
CALL UDE,UHL DJNZ MSCR3 CALL UDE,UHL DEC D,H DEC C JNZ MSCR2 RET
MscrPP
PUSH BC LD C,-3 LD A,L LD (IX+1),A LD (IX+2),H ADD A,C LD (IX+4),A LD (IX+5),H LD A,E LD (IX+7),A LD (IX+8),D SUB C LD (IX+11),A LD (IX+12),D SUB C LD (IX+15),A LD (IX+16),D SBC A,C LD (IX+20),A LD (IX+21),D SBC A,C LD (IX+24),A LD (IX+25),D ADD A,21 LD (IX+40),A LD (IX+41),D LD BC,scroLEN ;54 ADD IX,BC POP BC RET
scrolST
DI PUSH AF,BC,DE,HL,IX CALL OUT7 LD (scrolQ+1),SP JP _d000
scrolQ
LD SP,0 POP IX,HL,DE,BC,AF RET
scrol2
PUSH AF,BC,DE,HL,IX CALL OUT7 LD (scrol2Q+1),SP
scrol2J=$+1
JP _d000
scrol2Q
LD SP,0 POP IX,HL,DE,BC,AF RET
scrolin
LD SP,0;0 LD A,(0);3 LD (0),A;6 POP HL LD (0),HL;10 POP AF LD (0),A;14 INC SP POP HL LD (0),HL;19 POP HL LD (0),HL;23 INC SP POP AF INC SP POP BC,DE INC SP POP HL INC SP EXX POP BC,DE INC SP POP HL
LD SP,0;39 PUSH HL DEC SP PUSH DE,BC DEC SP EXX PUSH HL DEC SP PUSH DE,BC DEC SP PUSH AF
scroLEN=$-scrolin scroSIZ=scroLEN*47
- 3
UDE
LD A,D DEC D AND 7 RET NZ LD A,E SUB 32 LD E,A RET C LD A,D ADD A,8 LD D,A RET
- 3
UHL
LD A,H DEC H AND 7 RET NZ LD A,L SUB 32 LD L,A RET C LD A,H ADD A,8 LD H,A RET
EXB0
LD HL,COMFROM LD DE,lb000 CALL OUT6
EXPG0 LD C,(HL),A,(DE),(HL),A,A,C,(DE),A
INC DE,HL LD A,D CP #BF JNZ EXPG0 RET
COMPILS
CALL EXB0 LD A,24 ;KILL CALL cMPILE IFN cmpilmnu LD A,(plyrON) OR A JZ COMPnPL LD HL,mod-plaer ADD HL,DE EXD
COMPnPL
ENDIF LD (SNGLEN),DE CALL EXB0 IFN cmpilmnu LD HL,COMPCOO LD DE,COMPUSE LD BC,mCOMPIL CALL WINDOW LD HL,tCOMPIL LD A,H,(EDTXQIF),A LD DE,0 CALL PRMENU CALL PRCOMPI
COMPLOP
CALL HALTER CALL JPITEM CALL TSTFIRE JNC COMPLOP CALL CLOSWIN XOR A LD (EDTXQIF),A JP MKSCROL
COMSAVE
ENDIF LD A,-1 LD (comped),A IF0 ply+cmpilmnu JP DISKS ELSE LD A,"C",(extS),A LD A,201,(MHEXFNTpg),A CALL CLOSWIN LD A,205,(MHEXFNTpg),A XOR A LD (EDTXQIF),A POP HL CALL OUT7 IF0 ply JP DISKS ELSE LD A,(SNGST+1) LD IX,TRELOC LD HL,plaer LD D,#C0 LD ($-1),A LD E,A LD B,L
REL0 LD C,(IX)
LD A,C OR A JP Z,DISKS INC IX ADD HL,BC INC A JZ REL0 LD A,(HL) SUB D ADD A,E LD (HL),A JR REL0 ENDIF ENDIF IFN cmpilmnu
PLYRyn
LD HL,plyrON LD A,(HL) XOR -1 LD (HL),A LD BC,(SNGLEN) LD HL,mod-plaer CALL Z,NEGHL ADD HL,BC LD (SNGLEN),HL JP PRCOMPI
EcomADR
CALL WAITNOK LD A,2 LD DE,#1004 LD HL,tC0 CALL EDTXT LD A,(TXTBUF) CP "0 JC EcomAQ CP "G JNC EcomAQ CP "A JC $+6 SUB #37 JR EcomA1 CP ": JNC EcomAQ SUB "0
EcomA1 RRCA
RRCA RRCA RRCA LD B,A LD A,(TXTBUF+1) CP "0 JC EcomAQ CP "G JNC EcomAQ CP "A JC $+6 SUB #37 JR EcomA2 CP ": JNC EcomAQ SUB "0
EcomA2 OR B
LD (SNGST+1),A
EcomAQ JP PRCOMPI PRCOMPI plyrON=$+1
LD A,-ply OR A LD HL,TYES JNZ $+5 LD HL,TNO LD DE,#1103 CALL PRMENU LD HL,(SNGST) LD DE,#1004 CALL PRHL LD DE,#1008 CALL PRHL LD DE,#1009 LD L,5 CALL PRHL LD DE,#100A LD L,8 CALL PRHL LD DE,#100B LD BC,mod-plaer-8 ADD HL,BC CALL PRHL LD HL,(SNGLEN) LD DE,#100D ENDIF
PRHL
LD A,H CALL PRHEX INC D LD A,L
PRHEX
PUSH AF RRCA RRCA RRCA RRCA CALL PRBCD INC D POP AF
PRBCD
AND #F ADD A,#90 DAA ADC A,#40 DAA
PRADD
PUSH DE CALL PRADDPP CALL PR4X8 POP DE RET
INCCHN
LD A,(chn1) INC A CP 4 JNZ $+4 LD A,1
ICHNQ LD (chn1),A
LD DE,#2F0A JR PRBCD
DECCHN LD A,(chn1)
DEC A JNZ ICHNQ LD A,3 JR ICHNQ
INCCHN2
LD A,(chn2) INC A CP 4 JNZ $+4 LD A,1
ICHN2Q LD (chn2),A
LD DE,#390A JR PRBCD
DECCHN2 LD A,(chn2)
DEC A JNZ ICHN2Q LD A,3 JR ICHN2Q
D2HEX
CP 10 JC $+4 ADD A,"A"-": ADD A,"0 LD (digit),A JR PRADD
drive
LD C,A LD A,(#5D16) AND #FC OR C LD (#5D16),A LD A,C RET
BLOBER
LD E,0 LD D,H LD (HL),E INC H LD (HL),E INC H LD (HL),A INC H LD (HL),A INC H LD (HL),E INC H LD (HL),E LD H,D RET
BLOBER7 LD E,#70
JR BLOBER+2
- 2
ANYKEY
XOR A HALT IN A,(-2) RET
- 1
DECOM modCd=modC+255/256*256
LD HL,TSEARCH LD DE,#601 CALL PRMENU LD C,#A CALL DOS LD A,C LD C,8 CALL DOS CALL OUT7 LD HL,(#5CEB) LD (#5CF4),HL LD A,(#5CEA)
DECOM0 EXA
LD HL,modCd+256 LD DE,modCd PUSH DE ;modCd LD BC,256 LDIR LD HL,(#5CF4) EXD ;HL=modCd+256 LD BC,#105 CALL DOS POP HL ;modCd
DECOM1 LD DE,TPROTR;+13
;LD C,L PUSH HL LD B,#D
DCOMPP0 INC DE,HL;DEC DE,HL
LD A,(DE) CP (HL) JNZ DCOMPPQ DJNZ DCOMPP0 ;PUSH HL LD HL,TSEARCH LD DE,#601 CALL PRMENU LD HL,modCd+512 EXA LD BC,#4005 CP B JNC $+3 LD B,A LD DE,(#5CF4) CALL DOS POP HL LD DE,mod LD B,64 LDIR JP LDSNGQ
DCOMPPQ;LD L,C
POP HL INC L JNZ DECOM1 EXA DEC A JNZ DECOM0 JP DISKQ
CHN1PP chn1=$+1
LD A,1 LD BC,3 DEC A RET Z LD C,8 DEC A RET Z LD C,13 RET IFN bemol
EPbem
LD BC,(CURY) CALL GETnADR,XPP2 LD A,C ADD A,A,A,A,A,C,A,-2 ADD A,L LD L,A JNC $+3 INC H LD A,(HL) SUB 12 JNC $-2 ADD A,11 LD L,A DB "))) LD H,'FNTDEC+2 INC L BIT 3,(HL) ;diez RET Z DEC L LD D,H LD A,8 CALL bemxorP LD A,-8 CALL bemxorP INC HL LD DE,sprbem LD B,5 CALL bemxor JP PRPATU
bemxorP ADD A,L
LD E,A LD B,6
bemxor PUSH HL
LD A,(DE) XOR (HL) LD (HL),A INC HL,DE DJNZ $-5 POP HL RET
sprbem DB 2,6,4,4,6
ENDIF
IFN savset
suSAVE LD HL,DOSTSPP,(DOSADR),HL
LD HL,TPTSETU,DE,BUF,BC,12 PUSH DE LDIR LD HL,ink1,C,5 LDIR LD A,(FRQn),(DE),A INC E LD A,(joy),(DE),A INC E LD A,(poion),(DE),A INC E LD A,(SHOLK),(DE),A INC E LD A,(playon),(DE),A
SETsec=$+1
LD DE,#9E00 PUSH DE LD HL,EDORbf PUSH HL LD BC,#105 CALL DOS POP HL LD DE,TPTSETU,B,#C
suSAVCP LD A,(DE)
CP (HL) JNZ suSAVer INC HL,DE DJNZ suSAVCP POP DE,HL LD BC,#106 CALL DOS CALL PROK CALL OUT6 LD HL,DOSTEST,(DOSADR),HL RET
suSAVer POP HL,HL
CALL PRERR JR suSAVQ ENDIF
INCPATL LD A,(PATLEN)
INC A
IPATLQ
AND 63 LD (PATLEN),A,C,A LD A,(EPAT) LD HL,TPATSZ ADD A,L LD L,A LD (HL),C CALL prpatl JP PRPATU;IPOSPATQ v3+698;PRPAT
DECPATL LD A,(PATLEN)
DEC A JR IPATLQ RET
- 1
DECOM modCd=modC+255/256*256
LD HL,TSEARCH LD DE,#601 CALL PRMENU LD C,#A CALL DOS