Changes

PROTRACKER372 PT3D H

33,140 bytes added, 23:23, 14 February 2020
Created page with "pt3D C��tА�Б№Ц MAIN "",#C6 BEGcur LD A,(EPAT) CALL iPATq CALL XPP2 LD A,C CALL ICHNQ LD A,(CURY),(beg1),A..."
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