;******* ВСПОМОГАТЕЛЬНЫЕ ПОДПРОГРАММЫ ****** page6
 
 
 
TIMER   LD A,(TIC) ;таймер
 
        CP 97
 
        RET NZ
 
        LD HL,TIC_UP
 
        INC (HL)
 
        LD A,(LEVEL)
 
        ADD A,(HL)
 
        CP 53 ;_____= время на апгрейд - Nlev
 
        JR C,timU
 
        LD (HL),0
 
        CALL UP_TIM
 
timU    LD HL,RESULT+5
 
        CALL time
 
        LD HL,LEVRES+5
 
        ;
 
time    ;HL-указ на младш. цифру 999:59
 
        INC (HL)
 
        LD A,(HL)
 
        CP 10
 
        RET C
 
        LD (HL),0  ;
 
        DEC HL
 
        INC (HL)
 
        LD A,(HL)
 
        CP 6
 
        RET C
 
        LD (HL),0   ;
 
        DEC HL
 
        DEC HL
 
        INC (HL)
 
        LD A,(HL)
 
        CP 10
 
        RET C
 
        LD (HL),0   ;;
 
        DEC HL
 
        INC (HL)
 
        LD A,(HL)
 
        CP 10
 
        RET C
 
        LD (HL),0  ;;
 
        DEC HL
 
        INC (HL)
 
        RET
 
 
 
XY1st   ;первонач X0,Y0
 
        LD HL,(HUMAN)
 
        LD A,L
 
        SUB 6
 
        JR C,xys1
 
        LD L,A
 
xys1    LD A,H
 
        SUB 6
 
        JR C,xys2
 
        LD H,A
 
xys2    LD (X0),HL
 
        RET
 
 
 
RNDcrr  LD A,R ;увеличение случайности
 
        LD HL,RNB
 
        XOR (HL)
 
        LD (HL),A
 
        RET
 
 
 
;-------расчёт параметров после исследов
 
 
 
HvFrc   DEFB 3,4, 4,6, 5,8 ;воин/конник
 
cBLADE  ;расчёт силы удара
 
        LD A,(kBLADE)
 
        EX AF,AF
 
        LD A,(MASTER)
 
        OR A
 
        LD A,(hBLADE)
 
        JR Z,cBB1
 
        EX AF,AF
 
cBB1    LD HL,HvFrc
 
        PUSH HL
 
        CALL WA
 
        LD (FORCE+4),A
 
        INC HL
 
        LD A,(HL)
 
        LD (FORCE+8),A
 
        POP HL
 
        EX AF,AF
 
        CALL BA
 
        LD (FORCE+13),A
 
        INC HL
 
        LD A,(HL)
 
        LD (FORCE+17),A
 
        RET
 
 
 
cSHILD  ;расчёт величина защиты
 
        LD A,(kSHILD)
 
        EX AF,AF
 
        LD A,(MASTER)
 
        OR A
 
        LD A,(hSHILD)
 
        JR Z,cSS1
 
        EX AF,AF
 
cSS1    LD HL,DEFENC+3
 
        CALL cSS2
 
        EX AF,AF
 
        LD HL,DEFENC+12
 
cSS2    LD (HL),A ;лу
 
        INC HL
 
        LD (HL),A ;во
 
        INC HL
 
        INC HL
 
        INC HL
 
        INC HL
 
        LD (HL),A ;ко
 
        RET
 
 
 
cTIC    ;расчёт TIC,TIC3 и параметров
 
        LD HL,TIC3 ;трёхфазный счётчик 0-2
 
        INC (HL)
 
        LD A,(HL)
 
        CP 3
 
        JR C,ctt1
 
        LD (HL),0
 
ctt1    INC HL  ;TIC cчётчик 0-255
 
        INC (HL)
 
        LD A,(HL)
 
        RRA
 
        JR NC,cTT0
 
        RRA
 
        JR C,cHORSE
 
        JR cBLADE
 
cTT0    RRA
 
        JR C,cSHILD
 
        ;
 
cARC    ;расчёт видимости/дальности стрельбы из лука
 
        LD A,(kARC)
 
        EX AF,AF
 
        LD A,(MASTER)
 
        OR A
 
        LD A,(hARC)
 
        JR Z,cAA1
 
        EX AF,AF
 
cAA1    LD HL,tARChu
 
        CALL WA
 
        LD (sRANGE+3),A
 
        ADD A,2
 
        LD (sSCAN+3),A
 
        INC HL
 
        LD A,(HL)
 
        LD (BFORCE+0),A
 
        EX AF,AF
 
        LD HL,tARCkg
 
        CALL WA
 
        LD (sRANGE+12),A
 
        ADD A,2
 
        LD (sSCAN+12),A
 
        INC HL
 
        LD A,(HL)
 
        LD (BFORCE+1),A
 
        RET
 
 
 
tARChu  DEFB 2,3, 2,4, 2,5 ;дальность+2/сила
 
tARCkg  DEFB 1,4, 1,6, 2,6
 
 
 
 
 
HvThor  DEFB 2,2, 3,2, 3,3, 4,4 ;скорость лошади 0-3
 
 
 
cHORSE  ;расчёт скорости лошадей
 
        LD A,(kHORSE)
 
        EX AF,AF
 
        LD A,(MASTER)
 
        OR A
 
        LD A,(hHORSE)
 
        JR Z,cHH1
 
        EX AF,AF
 
cHH1    LD HL,HvThor
 
        PUSH HL
 
        CALL WA
 
        LD (HvTHs+8),A
 
        INC HL
 
        LD A,(HL)
 
        LD (HvTDs+8),A
 
        POP HL
 
        EX AF,AF
 
        CALL WA
 
        LD (HvTHs+17),A
 
        INC HL
 
        LD A,(HL)
 
        LD (HvTDs+17),A
 
        RET
 
 
 
dMAGIC  ;--изменение маны (ix+6) для 16и героев
 
        LD HL,mag_TM
 
        LD A,(HL)
 
        DEC (HL)
 
        OR A
 
        JR NZ,dMG6
 
        LD (HL),5 ;к-во блоков -1
 
dMG6    ADD A,A
 
        ADD A,A
 
        ADD A,A
 
        ADD A,A ;x16
 
        CALL N_IX
 
        LD DE,16
 
        LD B,16 ;число героев в блоке
 
dMG0    LD A,(IX+0)
 
        OR A
 
        JR Z,dMGe
 
        LD A,(IX+4)
 
        LD HL,HEALTH+1
 
        CALL WA
 
        OR A
 
        JR Z,dMGe
 
        CP #80
 
        LD A,(IX+6)
 
        JR C,dMG1
 
        ;креатуры
 
        OR A
 
        JR Z,dMG2
 
        DEC (IX+6) ;dec маны
 
        JR dMGe
 
dMG2    LD A,(IX+5)
 
        SUB 6 ;dec здоровья
 
        JR NC,dMG3
 
        XOR A
 
dMG3    LD (IX+5),A
 
        JR dMGe
 
dMG1    ;маги
 
        CP MANA
 
        JR NC,dMGe
 
        INC (IX+6)
 
dMGe    ADD IX,DE
 
        DJNZ dMG0
 
        RET
 
 
 
;-----скука/повороты
 
SPLIN   CALL RND
 
        AND 127
 
        CP 102
 
        RET NC
 
        CALL C,N_IX
 
        LD A,(IX+8)
 
        INC A
 
        RET NZ
 
        LD A,(IX+4)
 
        CP 9
 
        JR C,spli1
 
        SUB 9
 
spli1   CP 7
 
        RET NC
 
        LD A,R
 
        RRCA
 
        LD A,(IX+2)
 
        JR C,spli2
 
        INC A
 
        JR spli3
 
spli2   DEC A
 
spli3   AND 7
 
        LD (IX+2),A
 
        RET
 
 
 
;----воcст крестьян----
 
 
 
peonN   ;подсчёт пеонов
 
        LD HL,0 ;(L/H - лес/золт)
 
        CALL loop_K
 
pen0    LD A,(IX+0)
 
        OR A
 
        JR Z,pen1
 
        LD A,(IX+13)
 
        CP 7
 
        JR Z,penG
 
        CP 6
 
        JR NZ,pen1
 
        INC L ;лес
 
        JR pen1
 
penG    INC H ;золото
 
pen1    ADD IX,DE
 
        DJNZ pen0
 
        RET ;HL
 
 
 
REpeon  ;восст пеонов
 
        LD A,(TIC)
 
        AND %111111
 
        CP %110101
 
        RET NZ
 
        CALL peonN
 
        LD DE,(peon_W)
 
        LD A,L
 
        CP E
 
        JR C,reoW
 
        LD A,H
 
        CP D
 
        RET NC
 
        LD C,7;золото
 
        JR reo1
 
reoW    LD C,6;лес
 
reo1    ;поиск любой базы
 
        PUSH BC
 
        LD B,16
 
reo2    CALL RND
 
        AND #1F
 
        ADD A,#28
 
        CALL B_IX
 
        LD A,(IX+0)
 
        OR A
 
        JR Z,reo3
 
        LD A,(IX+2)
 
        OR A
 
        JR Z,reobz
 
        CP 10
 
        JR Z,reobz
 
reo3    DJNZ reo2
 
        POP BC
 
        RET ;база не найдена
 
reobz   ;произв крестьянина
 
        CALL HL_IX0
 
        CALL stayON
 
        LD A,(MASTER)
 
        OR A
 
        LD A,9
 
        JR Z,reo5
 
        XOR A
 
reo5    EX AF,AF
 
        LD A,1
 
        CALL NEWHER
 
        POP BC
 
        RET NZ ;mem?
 
        LD (IX+13),C ;тип
 
        ;затормозить сборы отряда
 
        LD A,(pntDEL)
 
        ADD A,20 ;delay
 
        LD (pntDEL),A
 
        RET
 
;*L+
 
WMUSIC  EQU 60535
 
        ds WMUSIC-$
 
 
 
        DISP DSCR ;???
 
        DEFS 6,#C9
 
        JP outSND
 
;*B ..\BOBOV\CROW_B1.MUS ;0!
 
;*B ..\BOBOV\CROW_B2.MUS ;1
 
;*B ..\BOBOV\CROW_A2.MUS ;2
 
;*B ..\BOBOV\CROW_3.MUS  ;3
 
;*B ..\BOBOV\CROW_4.MUS  ;4
 
;*B ..\BOBOV\CROW_5.MUS  ;5
 
;*B ..\BOBOV\OSEN.MUS    ;6
 
;*B ..\BOBOV\X_TXY.MUS   ;7
 
 
 
;---------начальный опрос пользователя------
 
;---эти п/п будут удалены
 
 
 
ITX01   DEFB 1,10,109,10, 25,62,50,48,79,10, 56,51,64,48,10
 
        DEFB 55,48,10, 59,78,52,53,57, 127 ;нов.люд
 
ITX02   DEFB 2,10,109,10, 25,62,50,48,79,10, 56,51,64,48,10
 
        DEFB 55,48,10, 58,67,61,51,62,50, 127 ;нов.кунг
 
ITX04   DEFB 4,10,109,10, 14,53,64,61,67,66,74,65,79,10
 
        DEFB 50,10, 30,82,91,102,26,83, 127 ;exit
 
ITX03   DEFB 3,10,109,10, 14,62,65,65,66,48,61,62,50,56,66,74,10
 
        DEFB 56,51,64,67, 127 ;load
 
 
 
        macro ATRRs _hl,_bc,_e
 
        LD HL,_hl
 
        LD BC,_bc
 
        LD E,_e
 
        CALL ATRRBR
 
        ENDM
 
 
 
ATRRBR  PUSHs
 
        INC H
 
        INC L
 
        LD E,#40
 
        CALL ATRBAR
 
        POPs
 
        JP ATRBAR
 
 
 
 
 
NO_NUM  LD BC,#7000
 
nnU0    DEC BC
 
        LD A,C
 
        OR B
 
        JR NZ,nnU0
 
        ;
 
        LD BC,#F7FE
 
        IN A,(C)
 
        CPL
 
        AND %11111
 
        JR NZ,NO_NUM
 
        LD B,#EF
 
        IN A,(C)
 
        CPL
 
        AND %11111
 
        JR NZ,NO_NUM
 
        RET
 
 
 
NUMBER  LD BC,#F7FE
 
        IN A,(C)
 
        CPL
 
        AND %11111
 
        JR NZ,nmr1
 
        LD B,#EF
 
        IN A,(C)
 
        CPL
 
        AND %11110
 
        JR Z,NUMBER
 
        ;6-9
 
        LD E,A
 
        LD A,9
 
        RR E
 
        RR E
 
        RET C
 
        DEC A
 
        RR E
 
        RET C
 
        DEC A
 
        RR E
 
        RET C
 
        DEC A
 
        RET
 
        ;
 
nmr1    LD E,A
 
        LD A,1
 
        RR E
 
        RET C
 
        INC A
 
        RR E
 
        RET C
 
        INC A
 
        RR E
 
        RET C
 
        INC A
 
        RR E
 
        RET C
 
        INC A
 
        RET
 
 
 
INIprn  CALL INIpr1
 
        INC D
 
        RET
 
 
 
INIpr1  PUSH DE
 
        CALL PRINTS
 
        POP DE
 
        INC D
 
        RET
 
 
 
INImg1  CALL STS
 
        LD DE,#703
 
        LD BC,#1C0B
 
        CALL MU_BOX
 
        ATRRs #703,#0B1C,#71
 
        LD DE,#905
 
        PUSH DE
 
        LD HL,ITX01
 
        CALL INIprn
 
        LD HL,ITX02
 
        CALL INIprn
 
        LD HL,ITX03
 
        CALL INIprn
 
        LD HL,ITX04
 
        CALL INIprn
 
        POP HL
 
        RET
 
 
 
INImg2  PUSH AF
 
        DEC A
 
        ADD A,A
 
        ADD A,H
 
        LD H,A
 
        LD BC,#118
 
        LD E,#72
 
        CALL ATRBAR
 
        POP AF
 
        RET
 
 
 
INI123  DI
 
        LD SP,STACK;#403E
 
        CALL MEM6
 
        CALL invTAB
 
        CALL outSND
 
        CALL MEM7
 
        CALL INImg1
 
ipp0    CALL NUMBER ;(1-4)
 
        CP 5
 
        JR NC,ipp00 ;секретная комбинация
 
        CALL INImg2
 
        CP 3
 
        JP Z,INIlod ;загрузка отгрузки
 
        JR C,INInew ;новая игра (1/2)
 
        ;exit
 
        CALL NO_NUM
 
        LD DE,#808
 
        LD BC,#0C05
 
        CALL MU_BOX
 
        ATRRs #808,#050C,#72
 
        LD DE,#A0A
 
        LD HL,ITX4
 
        CALL PRINTS
 
 
 
        if 1==1
 
;NedoOS
 
quitnedoos
 
        call swapimer
 
        im 1
 
        ei
 
        GET_KEY ;вычитать кнопку Y
 
        QUIT
 
        
 
        else
 
        
 
        EI
 
        LD B,120
 
EEE     HALT
 
        DJNZ EEE
 
        ;exit
 
        DI
 
        IM 0
 
        LD HL,#4000
 
        LD DE,#4001
 
        LD (HL),#44
 
        LD B,#20
 
        LDIR
 
        XOR A
 
        LD BC,#7FFD
 
        OUT (C),A
 
        JP 0
 
        endif
 
 
 
ITX4    DEFB  25,67,10,56,10, 55,64,79,47,127
 
ipp00   CP 8
 
        JR C,ipp0
 
         ;jr $
 
        JP NC,NoDoIt
 
 
 
ITX1z   DEFB  29,59,62,54,61,62,65,66,74,10, 56,51,64,75,43,127;diff
 
ITX11   DEFB  1,10,109,10, 26,49,75,71,61,48,79, 127;norm
 
ITX12   DEFB  2,10,109,10, 27,62,50,75,72,53,61,61,48,79,127;high
 
 
 
INInew  ;нов
 
        DEC A
 
        LD (MASTER),A
 
        CALL NO_NUM
 
        LD DE,#D08
 
        LD BC,#1309
 
        CALL MU_BOX
 
        ATRRs #D08,#0913,#60
 
        LD DE,#F0A
 
        PUSH DE
 
        LD HL,ITX1z
 
        CALL INIprn
 
        LD HL,ITX11
 
        CALL INIprn
 
        LD HL,ITX12
 
        CALL INIprn
 
ipp1    CALL NUMBER
 
        CP 3
 
        JR NC,ipp1
 
        POP HL
 
        PUSH AF
 
        ADD A,A
 
        ADD A,H
 
        LD H,A
 
        LD BC,#10F
 
        LD E,#7B
 
        CALL ATRBAR
 
        POP AF
 
        DEC A
 
        LD (DIFFIC),A
 
        CALL NO_NUM
 
        JP LODnew
 
 
 
ITX3z   DEFB 31,58,48,54,56,66,53,10, 61,62,60,53,64,127
 
ITX3x   DEFB 62,66,59,62,54,53,61,61,62,57,10, 56,51,64,75,43,10,127
 
 
 
ndi0    LD A,(LEVEL);1/2-(+/-Level);3-(on/off) убить всех;  6-выход
 
        INC A
 
        CP 10
 
        LD L,0
 
        JR C,ndi1
 
        LD L,1
 
        SUB 10
 
ndi1    LD H,A
 
        LD (NDIstr+2),HL
 
        LD A,(MORTE)
 
        LD (NDIstr+7),A
 
        LD HL,NDIstr
 
        LD DE,#0
 
        CALL PRINTS
 
        ;----изм парам
 
        CALL NO_NUM
 
        CALL NUMBER
 
        CP 6
 
        RET Z ;вых
 
        LD HL,LEVEL
 
        CP 2
 
        JR Z,ndiLP
 
        JR C,ndiLM
 
        CP 3
 
        JR NZ,ndi0
 
        LD A,(MORTE)
 
        XOR 86
 
        LD (MORTE),A
 
        JR ndi0
 
ndiLM   LD A,(HL)
 
        DEC (HL)
 
        OR A
 
        JR NZ,ndi0
 
        LD (HL),16
 
        JR ndi0
 
ndiLP   LD A,(HL)
 
        INC (HL)
 
        CP 16
 
        JR C,ndi0
 
        LD (HL),0
 
        JR ndi0
 
 
 
INIlod  ;загр. сост
 
        CALL NO_NUM
 
        LD DE,#F01   ;номер отгр
 
        LD BC,#1606
 
        CALL MU_BOX
 
        ATRRs #F01,#0616,#68
 
        LD DE,#1103
 
        LD HL,ITX3z
 
        CALL INIprn
 
        DEC D
 
        LD HL,ITX3x
 
        CALL PRINTS
 
        PUSH DE
 
        LD A,%11000101
 
        LD HL,ATR+596
 
        LD (HL),A
 
        PUSH HL
 
ppi4    CALL NUMBER
 
        CP 9
 
        JR NC,ppi4
 
        POP HL
 
        LD (HL),#70
 
        POP DE
 
        PUSH AF
 
        CALL PRINT
 
        CALL NO_NUM
 
        
 
        if 1==0
 
        
 
        LD DE,#407  ;дисковод  отгр
 
        LD BC,#1608
 
        CALL MU_BOX
 
        ATRRs #407,#0816,#69
 
        LD DE,#609
 
        LD HL,TXdsT1
 
        CALL INIpr1
 
        LD HL,TXdsT2
 
        CALL INIpr1
 
        LD HL,TXdsk2
 
        CALL INIpr1
 
        LD HL,TXdsk3
 
        CALL PRINTS
 
        PUSH DE
 
        LD HL,ATR+314
 
        LD (HL),#69+#80
 
        PUSH HL
 
        CALL A_or_B
 
        LD (DISK_T),A
 
        POP HL
 
        LD (HL),#71
 
        ADD A,12
 
        POP DE
 
        CALL PRINT
 
        
 
        endif
 
        
 
        CALL MEM6
 
        POP AF
 
        DEC A
 
        JP LODgam
 
 
 
        if 1==0
 
 
 
TXdsT1  DEFB 14,65,66,48,50,74,66,53,10, 30,82,91,102,26,83, 127 ;вст.ТР-ДОС
 
TXdsT2  DEFB 52,56,65,58,10, 65,10, 62,66,51,64,67,55,58,48,60,56, 127 ;д с отгр
 
 
 
A_or_B  ;возвр: 0/1 - A/B
 
        NOP
 
        LD BC,#7FFE
 
        IN A,(C)
 
        AND %10000
 
        LD A,1
 
        RET Z
 
        LD B,#FD
 
        IN A,(C)
 
        AND %1
 
        RET Z
 
        JR NZ,A_or_B
 
 
 
TXdsk1  DEFB 14,65,66,48,50,74,66,53,10, 52,56,65,58,10, 2,127 ;insert d2
 
TXdsk2  DEFB 56,10, 67,58,48,54,56,66,53,10, 56,60,79,127 ;и укажите имя
 
TXdsk3  DEFB 52,56,65,58,62,50,62,52,48,10, 87,12,90,13,88,43,10,127 ;д-ва
 
 
 
INI_D2  CALL MEM7
 
        CALL STS
 
        LD DE,#105  ;дисковод c диском 2
 
        LD BC,#1607
 
        CALL MU_BOX
 
        ATRRs #105,#0716,#7A
 
        LD DE,#307
 
        LD HL,TXdsk1
 
        CALL INIpr1
 
        LD HL,TXdsk2
 
        CALL INIpr1
 
        LD HL,TXdsk3
 
        CALL PRINTS
 
        PUSH DE
 
        LD HL,ATR+184
 
        LD (HL),#7A;+#80
 
        PUSH HL
 
        CALL A_or_B
 
        LD (DISK_2),A
 
        POP HL
 
        LD (HL),#72
 
        ADD A,12
 
        POP DE
 
        CALL PRINT
 
        RET
 
 
 
        endif
 
 
 
        db " *    THIS IS A SOME OF TEXT.   "
 
        db " *    GENS4 RULEZ FOREVER :-)   "
 
        db " *    AMIGA - SUXX & MUSTDIE!   "
 
        db " *    COMING SOON NEW LEVELS!   "
 
        db " * WHY DON'T WE DO IT IN A ROAD?"
 
        db " *    MY PHONE IS 812-1433303   "
 
        db " * "
 
 
 
BF_256  DEFS 1024,#BF
 
LOD1st  ;первичн загр
 
 
 
        if 1==0
 
 
 
        CALL selD_2
 
        CALL TR000
 
        LD DE,#09
 
        LD B,1
 
        LD HL,BF_256
 
        PUSH HL
 
        CALL D_READ ;загр. табл.ф-лов
 
        POP HL
 
        JR C,LOD1st
 
        ;проверка метки диска D2,F1
 
        LD A,(HL)
 
        CP #D2
 
        JR NZ,LOD1st
 
        INC HL
 
        LD A,(HL)
 
        CP #F1
 
        JR NZ,LOD1st
 
        INC HL
 
        ;перенос тб.ф-лов
 
        LD DE,WX_LEN
 
        LD BC,numFL
 
        LDIR
 
        
 
        endif
 
        
 
        ;выбрать: князь или гризольда?
 
        LD A,(MASTER) ;в зависимости от того, за кого играем
 
        OR A
 
        RET Z
 
        CALL MEM6
 
        LD HL,WGRIZ
 
        LD DE,#DC00
 
        LD BC,1024
 
        LDIR
 
        RET
 
 
 
INXbad  DEFB 26,72,56,49,58,48,10, 71,66,53,61,56,79,10, 56,90,56,59,56, 127
 
INXba2  DEFB 62,66,51,64,67,55,58,48,10, 61,53,10, 61,48,57,52,53,61,48, 127
 
 
 
LODbad  DI
 
        CALL MEM7
 
        CALL STS
 
        LD HL,WFONT
 
        LD (FONT),HL
 
        LD DE,#204  ;ошибка чтения
 
        LD BC,#1706
 
        CALL MU_BOX
 
        ATRRs #204,#0617,#F2
 
        LD DE,#406
 
        LD HL,INXbad
 
        CALL INIpr1
 
        LD HL,INXba2
 
        CALL PRINTS
 
        ;
 
lggB    LD BC,#7FFE
 
        IN A,(C)
 
        AND %1
 
        JR NZ,lggB
 
        ;
 
        LD HL,ATR
 
        LD DE,ATR+1
 
        LD BC,767
 
        LD A,%00110110
 
        LD (HL),A
 
        OUT (254),A
 
        LDIR
 
        CALL INImg1
 
        LD A,3
 
        CALL INImg2
 
        
 
        if 1==1
 
        jp quitnedoos
 
        else
 
        JP INIlod
 
        endif
 
 
 
invTAB  ;постр табл инв байтов для монстров 6:#C300
 
        LD HL,#C300
 
        XOR A
 
itq0    PUSH AF
 
        LD C,0
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        RRCA
 
        RL C
 
        LD (HL),C
 
        POP AF
 
        INC HL
 
        INC A
 
        JR NZ,itq0
 
        RET
 
 
 
NDIstr  DEFB 112,109,0,0,10,60,109,0,127
 
NoDoIt
 
        if 1==1
 
        ;8-вход в режим отладки
 
        CALL ndi0
 
        JP INI123
 
        else
 
        ;86275-вход в режим отладки
 
        LD A,44
 
        CALL hexPRN
 
        CALL hexDIG
 
        LD H,A
 
        PUSH HL
 
        CALL hexDIG
 
        POP HL
 
        LD L,A
 
        LD DE,ndi0-#6275
 
        ADD HL,DE
 
        CALL ndiS
 
        JP INI123
 
ndiS    JP (HL)
 
        endif
 
 
 
hexDIG  CALL NO_NUM ;ввод #XX
 
        CALL NUMBER
 
        CALL hexPRN
 
        ADD A,A
 
        ADD A,A
 
        ADD A,A
 
        ADD A,A
 
        PUSH AF
 
        CALL NO_NUM
 
        CALL NUMBER
 
        CALL hexPRN
 
        POP BC
 
        ADD A,B
 
        RET
 
        ;
 
hexPRN  PUSH AF
 
        LD DE,#17
 
        CALL PRINT
 
        POP AF
 
        RET
 
 
 
WGRIZ
 
        incbin "data/wgrizold.dat"
 
;-------------------
 
        ent ;ENDD
 
;----исполняются отседа
 
 
 
lggTRY  DEFB 50
 
 
 
LODgam  ;восст игры A=0-7
 
 
 
        if 1==1
 
        add a,'1'
 
        ld (savgamletter),a
 
        
 
        call swapimer
 
        ;im 1
 
        
 
        ld de,savgamfilename
 
        OS_OPENHANDLE
 
        or a
 
        jr nz,badbad
 
        push bc
 
        LD de,G_DATA ;отгрузка идёт с #7700
 
        ld hl,0x4900 ;size
 
        OS_READHANDLE
 
        pop bc
 
        OS_CLOSEHANDLE
 
        
 
        call swapimer
 
        ;im 2
 
        
 
        CALL DECODE
 
badbad
 
        push af
 
        CALL LDItmp
 
        pop af
 
        JP nz,LODbad ;ошибка загрузки/нет данных об игре
 
        
 
        else
 
 
 
        ADD A,A
 
        ADD A,A
 
        ADD A,A
 
        ADD A,4 ;тр:4,12,20,28,36,44,52,60
 
        LD D,A ;трек
 
        LD A,5 ;к_во ретрай-попыток
 
        LD (lggTRY),A
 
        LD A,(DISK_T)
 
        LD (tDRIVE),A
 
        PUSH DE
 
        CALL TR000
 
        POP DE
 
        LD HL,G_DATA
 
        LD A,5
 
lgg0    LD SP,#403E
 
        PUSH AF
 
        CP 1
 
        LD B,16
 
        JR NZ,lgg1
 
        LD B,9
 
lgg1    LD E,1
 
lgg11t  PUSH DE
 
        CALL POS
 
        POP DE
 
lgg11   PUSHs  ;чтение отгрузки
 
        XOR A
 
        LD (SIDE),A
 
        LD B,1
 
        PUSH DE
 
        DI
 
        CALL d_rea_
 
        DI
 
        POP DE
 
        JR NC,SEC_ok
 
          CALL TR000 ;обр. ошибки
 
          POPs
 
          LD A,(lggTRY)
 
          DEC A
 
          LD (lggTRY),A
 
          OR A
 
          JR NZ,lgg11t
 
          POP AF
 
badbad    CALL LDItmp
 
          JP LODbad
 
SEC_ok  POPs
 
        INC E
 
        INC H
 
        DJNZ lgg11
 
        INC D
 
        POP AF
 
        DEC A
 
        JR NZ,lgg0
 
        CALL DECODE
 
        JR NZ,badbad;ошибка загрузки/нет данных об игре
 
lgg_OK  
 
        endif
 
        CALL LDItmp
 
        LD A,(DISK_T)
 
        LD (SAVDSK),A
 
        JP CONTgm  ;перейти к диску 2
 
 
 
LDItmp  ;загр временного кода
 
        DI
 
        ;
 
        CALL outSND
 
        ;
 
        LD HL,WMUSIC
 
        LD DE,DSCR
 
        LD BC,#1800
 
        LDIR
 
        ;
 
        DI
 
        LD A,2
 
        LD (V_FLAG),A
 
        RET
 
 
 
outSND  ;выруби AY
 
        LD B,16
 
oss0    PUSH BC
 
        LD A,B
 
        DEC A
 
        LD BC,#FFFD
 
        OUT (C),A
 
        LD B,#BF
 
        CP 7
 
        LD A,0
 
        JR NZ,oss7
 
        CPL
 
oss7    OUT (C),A
 
        POP BC
 
        DJNZ oss0
 
        RET
 
 
 
LDI123  CALL LDItmp
 
        CALL INI123 ;->>
 
;???
 
;относятся к загрузке игры
 
;*L+
 
        DEFS #FE00-$,98
 
        ;старт #fe00
 
        DI
 
        LD HL,#4000
 
        LD DE,#8000
 
swp5_2  LD C,(HL) ;обмен страниц 5 и 2
 
        LD A,(DE)
 
        LD (HL),A
 
        LD A,C
 
        LD (DE),A
 
        INC HL
 
        INC DE
 
        LD A,D
 
        CP #C0
 
        JR C,swp5_2
 
        JP JP_ST ;на старт игры