-         DEVICE ZXSPECTRUM1024 
-         include "../../_sdk/sys_h.asm" 
- _128=PROGSTART+3 
- swapimer=PROGSTART+6 
- ttexpgs=PROGSTART+0x100 
-   
- LEVDAT  EQU     #79C0 ;адр. нач данных уровня 
-         ORG     LEVDAT 
- begin 
- DSCR    EQU 0xc000;#4000 
-   
- ;*D- 
- ;********* Победа людей **************** 
-   
- isRUNC  ; кодовый блок 
-          nop 
-          ;jr $ 
-         ;LD A,0  ;люди 
-         LD A,1 ;кунги 
-         JP F_CUTh 
-   
- ;--------характеристики сторон-------(0)-обнулять вначале 
-   
- ;параметры играющего 
- ;hTOWER DEFB 4 ;мак.число типов вооруж (1-4) 
- ;hARC   DEFB 0 ;0-2 (0) 
- hHORSE  DEFB 1 ;0-3 (0) 
- hSHILD  DEFB 0 ;0-2 (0) 
- hBLADE  DEFB 1 ;0-2 (0) 
- hmaxC   DEFB 3 ;1-3 чиcло возможн иccл закл свящ 
- hmaxW   DEFB 3 ;1-3 число  --"-- закл волш 
-   
- ;дополнительные параметры играющего 
- hmaxB1  DEFB 2 ;макс число стандарт зданий (0 или 1-2) 
- hmaxB2  DEFB 4 ;maкc число доп эданий (0, 1-4) 
- hWALL   DEFB 17 ;0/17 - можно/нельзя строить стены 
-   
- ;параметры компьютера 
- kTOWER  DEFB 4 ;1-4 
- kARC    DEFB 0 ;0-2 
- kHORSE  DEFB 2 ;0-3 
- kSHILD  DEFB 1 ;0-2 
- kBLADE  DEFB 1 ;0-2 
- kmaxC   DEFB 3 ;1,3 чиcло иccл закл (0-нет свящ) 
- kmaxW   DEFB 3 ;1..3 чиcло иccл закл (0-нет волш) 
-   
- ;----------- параметры стратегии врага ---------------- 
- ;/wSTRATEG  (1.ед.изм - 8тик) 
- levMAX  DEFB 8   ;макс число народу в группе (для уровня) = 1..10 
- levDEL  DEFB 41  ;средн задержка межд сборами (для уровня) = 1..X 
- lev1ST  DEFB 221 ;нач задержка первого сбора = 1.. 
-  ;Тип уровня 0 ;обычный 
-  ;Тип уровня 1 ;атакованый охранник становится атакующим 
-  ;Тип уровня 2 ;см. тип 1 + охранники иногда идут в атаку 
- levTYP  DEFB 0   ;тип уровня (0-обычный) 
- ;-------- цветовые настройки ------- 
- COLOR   DEFB #28 ;цвет поля 
-   
- ;-------- общие параметры уровня ----- 
- MASTER  DEFB 0  ; кто играет 0/1 - люди?кунги 
- LEVEL   DEFB 15  ; номер уровня 
- MONEY   DEFB 0,0,3,0,0,0 ;деньги 
- WOOD    DEFB 0,0,0,5,0,0 ;леc 
- TASK_M  ;задание: 3 строки по 20+1 символов = 63 
-         ds 63 ;*B ..\TASK\w115.tsk 
- LEVRES  DEFB 0,0,0,43,0,0,127 ;текущее время прохождения 
-   
- ;------- используемые файлы ------- 
-   
- fsLAND  DEFB 2; 1-4 
- fsMUS   DEFB 0; 0-7 
-   
-   
- ;****************** Инициализируемые переменные **************** 
- ;--------------- (входят в описание каждого уровня) ------------ 
- ;/выбраные герои 
- SEL_T DEFB 0 ;0-none;1-один;2-6-group;7-кунг,8-здание 
- SEL_N DEFB 0,0,0,0,0,0 ;номера 6 выбр гер/зд 
-   
- sel_en DEFB #FF ;выбранный враг-цель 
- sel_ti DEFB 0 ;время отображения цели 
-   
- ;/outLED 
- LED DEFB 4,3,4,3,4,3 
-   
- ;/putTX 
- _msg    DEFB #FF 
- pTX_AD  DEFW 0;WNAMES 
- TX_AD   DEFW 0;WNAMES 
- pTXdel  DEFB 0 ;t задержки на выв экcтр cообщ 
-   
- ;/M_PLAT 
- isPLAT  DEFB 0; 0/1-есть/нет площадки 
- szPLAT  DEFB 0; размер площадки под стр-во (1..3, 0-нет) 
- bcPLAT  DEFW 0; размеры 
- adPLAT  DEFW 0; позиция in ATR 
- waPLAT  DEFB 0; если стена - 1 
-   
- ;/PAUSE 
- onPAUS  DEFB 1 ;0-включить паузу 
-   
- ;/SOUNDn 
- NOTA    DEFW se ;текущ нота <---- ПРЕРЫВАНИЕ ПИШЕТ СЮДА 
- se      DEFW #FFFF ;конст 
- levSND  DEFB 0 ;0-макс громкость 
- sIY56   DEFW 0 ;координаты снарядов 
- priv_S  DEFB 0 ;текущ приоритет (0-нет мелодии) 
- NOTA2   DEFW se ;нота новой мелодии 
- priv_2  DEFB 0  ;нов приор 
-   
- ;/STRATEG - variables 
- pntX    DEFB 32  ;-коорд т.сбора 
- pntY    DEFB 31  ;-/ 
- pntNUM  DEFB 0   ;-число оставшихся до конца сбора воинов (0-конец сбора, 255-нов сбор) 
- pntDEL  DEFB 22  ;-время до нач.след сбора/задержка на пр-во воина 
- pntTAR  DEFB #FF ;-объект атаки (0-101 - воины, #80.. -здания, #FF-нет) 
- pntUNI  DEFB 0   ;-отряд разнородный/однородный (0/member typ) 
- pntEN   DEFB 0,0,0,0,0,0 
-                  ;-разреш пр-во вида (3..8) (0-нет) 
- pntMAN  DEFB 0   ;тип пораждаемого воина 
-   
- ;/isEND 
- END_1   DEFB 0  ;0/1/2-none/нет врагов/нет людей 
- END_2   DEFB 0  ;не0-князь вошёл в пещеру 
- TheEND  DEFB 0  ;0/1/2-none/победа людей/победа врагов (устанавл в _cLOOP) 
-   
-         if 1==1 
- ;надо загрузить brfinal.dat и странички 
- ;*P0; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIu_0.LPZ 
- ;*P1; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIu_1.LPZ 
- ;*P3; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIv_0.LPZ 
- ;*P4; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIv_1.LPZ 
- ;*P6; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIw_0.LPZ 
- ;*P7; 
- ;        ORG #C000 
- ;*B ..\INTRO\FLICK.LPZ\WANIw_1.LPZ 
- loader 
-   
-         ld hl,texfilename 
-         ld de,0x8000 ;addr 
-         ld b,7 
- getttexpgs0 
-         push bc 
-          ld a,(hl) 
-          call _128 
-         inc hl 
-         push hl 
-         push de ;addr 
-         ex de,hl 
-         OS_OPENHANDLE 
-         pop de ;addr 
-         push bc 
-         ;ld de,0xc000 ;addr 
-         ld hl,0x4000 ;size 
-         OS_READHANDLE 
-         pop bc 
-         OS_CLOSEHANDLE 
-                  
-         pop hl 
-         ld b,1 
-         xor a 
-         cpir ;after 0 
-         pop bc 
-         ld de,0xc000 ;addr 
-         djnz getttexpgs0 
-   
-         call swapimer 
-         ;im 2 
-          
-         pop af 
-         ld (0x8000),a 
-   
-         jp 0x8001 
-          
- texfilename 
-         db 0,"brfinal.dat",0 
-         db 0,"branix_0.dat",0 
-         db 1,"branix_1.dat",0 
-         db 3,"braniy_0.dat",0 
-         db 4,"braniy_1.dat",0 
-         db 6,"braniz_0.dat",0 
-         db 7,"braniz_1.dat",0 
-   
-         endif 
-   
- Sc1 
-         incbin "../barkov/w_end_k.scr" 
- Sc2 
-         incbin "../barkov/w_end2.scr" 
-   
- F_CUTh  ;DI 
-         ;IM 1 
-         LD SP,LEVDAT-2 
-         LD B,A 
-         PUSH BC 
-         CALL OFFD 
-          xor a 
-         CALL _128 
-          
-         if 1==1 
-         call swapimer 
-         ;im 1 
-         ld e,3 
-         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode) 
-         ld e,0 
-         OS_SETSCREEN 
-         ld de,RSTPAL 
-         OS_SETPAL 
-         ;OS_GETSCREENPAGES 
- ;de=страницы 0-го экрана (d=старшая), hl=страницы 1-го экрана (h=старшая) 
-         ld a,(user_scr0_high) ;ok 
-         SETPG32KHIGH 
-         endif 
-   
-         LD HL,Sc1 
-         CALL COPYAT 
-   
-         ;пробел? 
- lggP    LD BC,#7FFE 
-         IN A,(C) 
-         AND %1 
-         JR NZ,lggP 
-   
-         CALL OFFD 
-   
-         LD HL,Sc2 
-         CALL COPYAT 
-   
-         if 1==1 
-         jp loader 
- RSTPAL 
-         STANDARDPAL 
-   
-         else 
-   
-         CALL A_or_B 
-         LD (tDRIVE),A 
-         CALL OFFD 
-         ;чтение трек 0, сек 9 по 23845 
- A009    EQU     23845 
- L1st    CALL TR000 
-         LD DE,#09 
-         LD B,1 
-         LD HL,A009 
-         PUSH HL 
-         CALL D_READ ;загр. табл.ф-лов 
-         POP HL 
-         JR C,L1st 
-         ;проверка метки диска D1,BB 
-         LD A,(HL) 
-         CP #D1 
-         JR NZ,L1st 
-         INC HL 
-         LD A,(HL) 
-         CP #BB 
-         JR NZ,L1st 
-         ;перенос т.ф-лов 
-         POP BC 
-         LD A,(tDRIVE) 
-         JP A009+2 
-         endif 
-   
-         if 1==0 
- ;------------------- вспом п/п 
-   
- 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 
-         endif 
-   
-         if 1==0 
- ;TODO fix 
- _128    LD A,%10000 
-         LD      BC,#7FFD 
-         OUT     (C),A 
-         RET 
-         endif 
-   
- OFFD    LD      DE,DSCR+#1AFE 
-         PUSH DE 
-         POP HL 
-         INC HL 
-         LD      BC,768 
-         LD      (HL),0 
-         LDDR 
-         LD      BC,6143 
-         LD      (HL),255 
-         LDDR 
-         RET 
-   
- COPYAT  ;из HL 
-         LD      BC,6912 
-         LD      DE,DSCR 
-         LDIR 
-         RET 
-   
-         if 1==0 
- ;-------tr/dos 
- RG_DOS  LD      IX,#2A53 ;выв в рег TRDOS (out (C),A:ret) 
-         JR      DOS 
-   
- DOS     PUSH    IX 
-         JP      #3D2E 
-   
- POS     ;позиционир трек 
-         LD C,#3C 
-         LD A,(SIDE) 
-         OR A 
-         JR      Z,DW_SID 
-         RES     4,C 
- DW_SID  LD A,(tDRIVE) 
-         OR C 
-         LD      C,#FF 
-         CALL    RG_DOS 
-         LD      A,D 
-         LD      C,#7F 
-         CALL    RG_DOS 
-         LD      A,#18 
-         LD      IX,#2F57 ;вып ком TRDOS 
-         JP DOS 
-   
- RD_SCT  LD      BC,RD_SCT ;по этому адресу = 1 
-         PUSH    BC 
-         LD      BC,#17F 
-         LD      IX,#2090  ;чтение сектора из п/п форматирования(портит#5cd6) 
-         JR      DOS 
-   
- TR000   CALL TR00 ;иниц дисковода + задержка 
-         CALL TR00 
-         CALL TR00 
- TR00    DI 
-         LD      D,0 
-         CALL    POS 
-         LD      IX,#2F65 ;ld a,8:jr 2f57 
-         JR      DOS 
-   
- tDRIVE  DEFB 0 
- SIDE    DEFB 0 
-   
- D_READ  DI ;E-sec,D-trk,B-sec.num,HL-mem.adr 
-         CALL    POS 
-         LD      A,(#5CD6) 
-         EX      AF,AF' 
- NXT_S   DEFB    #DD 
-         LD      L,#3 ;retry.num 
- NXT_SC  PUSH    HL 
-         PUSH    BC 
- NXC_C1  PUSH    IX 
-         LD      C,#5F 
-         LD      A,E 
-         CALL    RG_DOS 
-         CALL    RD_SCT 
-         DI 
-         LD      HL,#5CD6 
-         EX      AF,AF' 
-         CP      (HL) 
-         POP     IX 
-         JR      Z,GOOD 
-         LD      (HL),A 
-         DEFB    #DD 
-         DEC     L 
-         POP     BC 
-         POP     HL 
-         JR      Z,ERR_RW 
-         EX      AF,AF' 
-         JR      NXT_SC 
- GOOD    POP     BC 
-         POP     HL 
-         EX      AF,AF' 
- GOOD1   INC     E 
-         LD      A,E 
-         CP      #F9 
-         JR      C,OLD_TR 
-         LD      E,#F4 
-         INC     D 
-         CALL    POS 
- OLD_TR  INC     H 
-         INC     H 
-         INC     H 
-         INC     H 
-         DJNZ    NXT_S 
-         XOR     A 
-         RET 
-   
- ERR_RW  SCF 
-         RET 
-   
-         endif 
- end 
-         savebin "br/br217.dat",begin,end-begin ;in current dir (not in dir of this source) 
-