Top secrets sources NedoPC pentevo

Rev

Rev 635 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed | ?url?


;LAST UPDATE: 05.02.2014 savelij

;á­ ç «  ª®¬¯¨«¨¬ atm=0, ¯ ªã¥¬ ZXRAR header=off
;¯®â®¬ ª®¬¯¨«¨¬ atm=1
COVPORT         EQU 251
sound           EQU 1
;atm            EQU 0
smuc            EQU atm
sectcycl        EQU 8 ;1 ¨§ ­¨å §¢ãª®¢®©

reaction        EQU 5;4 ;¢à¥¬ï ॠªæ¨¨
z               EQU 6;5    ;§ ¤¥à¦ª  ®â­®á¨â¥«ì­® T¨å/1.7554

                IF smuc=1;       IFN    smuc
                IF atm=1;      IFN      atm
;á奬  ATM:
hddstat         EQU 0XFEEF
hddcmd          EQU 0XFEEF
hddhead         EQU 0XFECF
hddcylhi        EQU 0XFEAF
hddcyllo        EQU 0XFE8F
hddsec          EQU 0XFE6F
hddcount        EQU 0XFE4F
hdderr          EQU 0XFE2F
hdddatlo        EQU 0XFE0F
hdddathi        EQU 0XFF0F
hddupr          EQU 0XFEBE ;¯à¨ ãáâ ­®¢«¥­­®¬ b7 FFBA
hdduprON        EQU 0XFFBA
hddupr1         EQU 0XF7
hddupr0         EQU 0X77
      ELSE     
;á奬  SMUC:
hddstat         EQU 0XFFBE
hddcmd          EQU 0XFFBE
hddhead         EQU 0XFEBE
hddcylhi        EQU 0XFDBE
hddcyllo        EQU 0XFCBE
hddsec          EQU 0XFBBE
hddcount        EQU 0XFABE
hdderr          EQU 0XF9BE
hdddatlo        EQU 0XF8BE
hdddathi        EQU 0XD8BE
hddupr          EQU 0XFEBE ;¯à¨ ãáâ ­®¢«¥­­®¬ b7 FFBA
hdduprON        EQU 0XFFBA
hddupr1         EQU 0XF7
hddupr0         EQU 0X77
      ENDIF    
       ELSE    
;á奬  Nemo:
hddstat         EQU 0XF0
hddcmd          EQU 0XF0
hddhead         EQU 0XD0
hddcylhi        EQU 0XB0
hddcyllo        EQU 0X90
hddsec          EQU 0X70
hddcount        EQU 0X50
hdderr          EQU 0X30
hdddatlo        EQU 0X10
hdddathi        EQU 0X11
hddupr          EQU 0XC8
hdduprON        EQU 0
       ENDIF   

SECBUF          EQU 0XB500
LASTSND         EQU 0XB500
SNDLEN          EQU 2048
pusto           EQU 0XBF00
PROUTBUF        EQU 0XBF00 ;32 bytes á¯à ©â ᨬ¢®« 
TY              EQU 0XBD00 ;512 ;®¡ï§ â¥«ì­® ¤«ï ATM A8=1!!!
RARS            EQU 0X4000 ;¤«ï à á¯ ª®¢ª¨ íªà ­®¢
addr            EQU 0X9F00 ;¤«ï à á¯ ª®¢ª¨ íªà ­®¢ (<0XA000)

                IF atm=1;       IFN     atm
pgspr           EQU 0X10
pgfnt           EQU 0X10
pgIQ            EQU 0X10
pgpic           EQU 0X14
pgmuz           EQU 0X16
p14             EQU 0X11 ;íªà0 á«®©0
p15             EQU 0X15 ;íªà0 á«®©1
p16             EQU 0X13 ;íªà1 á«®©0 (¢ë¢®¤¨âáï íªà0)
p17             EQU 0X17 ;íªà1 á«®©1
p1C             EQU 0X19 ;íªà0 á«®©0 (¢ë¢®¤¨âáï íªà1)

xy2adr        MACRO;    xy2adr
_a := _y*40+_x+0XC004
        ENDM   
       ELSE    
pgspr           EQU 0X10
pgfnt           EQU 0X10
pgIQ            EQU 0X10
pgpic           EQU 0X11
pgmuz           EQU 0X13
p14             EQU 0X14 ;íªà0 á«®©0
p15             EQU 0X15 ;íªà0 á«®©1
p16             EQU 0X16 ;íªà1 á«®©0 (¢ë¢®¤¨âáï íªà0)
p17             EQU 0X17 ;íªà1 á«®©1
p1C             EQU 0X1C ;íªà0 á«®©0 (¢ë¢®¤¨âáï íªà1)

xy2adr        MACRO;    xy2adr
_a := (_y&7)<<8+((_y&56)<<2)+((_y&192)<<5)+_x+0XC000
        ENDM   
       ENDIF   

outim           MACRO;  outi
       IF       atm=0
        CALL    pause
       ENDIF   
        OUTI   
                ENDM

        ORG     0X6000
begin
        JP      LOADPEX
WASLOA
                binclude loa16.bin;        INCBIN       "loa16. "
Lloa := $-WASLOA
WASPENT
                binclude pent.bin;        INCBIN        "PENT. "
                DUPL 0X7F00-$,0;        DS      0X7F00-$
LOADPEX
;B=⨯ ª®¬¯ìîâ¥à :
 ;0=PENTAGON, 1=ATM, 2=SCORPION, 3=PROFI, 4=SPRINTER
        PUSH    BC
        DEC     B
        POP     BC
        JP      Z,GO ;ATM
       PUSH     AF
       PUSH BC
       PUSH DE
       PUSH HL
  ;depack PENT version
        LD      HL,0X5800
        LD      DE,0X5801
        LD      BC,0X2FF
        LD      (HL),L
        LDIR   
        LD      IX,WASPENT
        LD      DE,0X8200
        LD      HL,0X3E00
        CALL    UNILDRAR ;à á¯ ª®¢ë¢ ¥¬ IX->DE (¤«¨­ =HL)

       POP      HL
       POP DE
       POP BC
       POP AF
        JP      GO
                DUPL 0X8000-$,0;        DS      0X8000-$
                include smallunr.a80;        INCLUDE    "B:smallunr",0X44

  ;¤ «ìè¥ § ¬¥­ï¥¬ ï ç áâì
                DUPL 0X8200-$,0;        DS      0X8200-$
GO
;SP=0X6000, DI
;A=0XA0 (master) ¨«¨ 0XB0 (slave)
;C=⨯ ª®­â஫«¥à  IDE:
 ;0=NEMO, 1=ATM, 2=SMUC, 3=PROFI, 4=SPRINTER
;D=ï§ëª:
 ;0=ENGLISH, 1=“‘‘Šˆ‰
;E= ¤à¥á COVOX:
 ;0XFB=ATM/PENTAGON
;H=¤®áâã¯­ë¥ ¢¨¤¥®à¥¦¨¬ë (­ ª« ¤ë¢ îâáï ¯® OR)
 ;1=512x192 BW VMG
 ;2=384x304 ZX AC
 ;4=256x192 15 AC
 ;8=320x200 16 ATM
        LD      SP,0X8000
       LD       (REG_SDH),A
       LD       A,E
       LD       (varcovport),A

      ;LD A,4
      ;OUT (-2),A

        LD      BC,32765
        LD      A,0X10
        OUT     (C),A
        LD      HL,WASLOA
        LD      DE,loa
        LD      BC,Lloa
        LDIR   

        CALL    CLSATM

                IF 1;      IFN  1
        LD      BC,32765
        LD      A,pgpic
        OUT     (C),A
        LD      HL,0X9F00
        LD      DE,0XC000
        LD      BC,0X2100
        LDIR   
        LD      BC,32765
        LD      A,0X10
        OUT     (C),A

      ;LD A,5
      ;OUT (-2),A

        LD      HL,loa
        LD      BC,Lloa
;¢ª«îç ¥¬ 2-© íªà ­ ¨ áâà. á ª à⨭ª ¬¨
        LD      A,0X18
        LD      (curplane),A
       LD       IXH,0X00 ;ç¥à­ë¥ ¯®«ï íªà ­ 
        CALL    DEPKS16

                IF atm=1;       IFN     atm
        LD      BC,0XFF77 ;¢ëª«.⥭¥¢ë¥ ¯®àâë
        LD      A,%10101000 ;EGA
        CALL    OUTSHAD
       ELSE    
         LD     A,0XFE
         IN     A,(0XFE)
         RRA   
        LD      BC,0XEFF7
        LD      A,1
        ;JNC $+4 ;CS - turbo for Pentagon 1024SL 2.2
        ;OR 0X10 ;noturbo for ZX Evo
        OUT     (C),A
       ENDIF   

        LD      BC,32765
        LD      A,pgpic
        OUT     (C),A ;¢ª« 1-© íªà ­
        LD      HL,0XC000
        LD      DE,0X9F00
        LD      BC,0X2100
        LDIR   
        LD      A,0X17
        LD      (curplane),A

       LD       DE,0
WAIT1S          REPT 4; DUP     4
       ADD      HL,HL
                ENDM;       EDUP       
       DEC      DE
       LD       A,D
       OR       E
       JR NZ,WAIT1S

      ENDIF    
        LD      BC,32765
        LD      A,0X10
        OUT     (C),A

        LD      HL,AP_READTOC
        CALL    SEND_ATAPI
      ;RET C
        CALL    NO_BSY
      ;RET C
        CALL    WAIT_DRQ
      ;RET C
        CALL    LEN_TO_HL
        LD      B,H
        LD C,L
        LD      HL,SECBUF
        CALL    TRANS_IN
        CALL    NO_BSY

        CALL    SCANCAT
      ;LD A,4
      ;OUT (-2),A

        LD      HL,AP_1x
        CALL    SEND_ATAPI
      ;LD A,5
      ;OUT (-2),A

        LD      HL,TY
     ;¤«ï 2 ¡¨â¯« ­®¢ (+0/64), +128 - ª®¤ ­®¢®£® ª ¤à 
MKTY
        LD      A,L
        AND     31
        JR NZ,MKTYN0
                IF atm=1;      IFN      atm
        LD      DE,0XC004
      ELSE     
        LD      DE,0XC000
      ENDIF    
MKTYN0
         LD     A,L
         AND    31
         CP     24
         JR C,$+5
         LD     DE,0
        LD      (HL),E
        INC     H
        LD      (HL),D
        DEC     H
                IF atm=1;       IFN     atm
        LD      A,E
        ADD     A,LOW (40*8)
        LD      E,A
        JR NC,$+3
        INC     D
        INC     D
       ELSE    
        LD      A,E
        ADD     A,32
        LD      E,A
        JR NC,$+6
        LD      A,D
        ADD     A,8
        LD      D,A
       ENDIF   
        INC     L
        JR NZ,MKTY

        CALL    CLSATM

                IF atm=1;       IFN     atm
        LD      A,%10101000 ;EGA
        CALL    OPENPORTS_A
        LD      A,0XED
        LD      (IN_A),A
        LD      (OUT_A),A
        LD      A,0X78 ;in a,(c)
        LD      (IN_A+1),A
        INC     A    ;out (c),a
        LD      (OUT_A+1),A
        LD      A,0XC9
        LD      (IN_A+2),A
        LD      (OUT_A+2),A
       ELSE    
        LD      BC,0XEFF7
        LD      A,1
        OUT     (C),A
       ENDIF   

        LD      DE,0XE00
SHUT0   DEC     D
        CALL    OUTAY
        JR NZ,SHUT0
;¨£à ¥â â®­ á ®£¨¡ î饩 ¢ ª ­ «¥ B
        LD      DE,0X7FD
        CALL    OUTAY
        LD      DE,0X910
        CALL    OUTAY

       ;LD A,7
       ;OUT (-2),A

        LD      HL,TFILES
NEWVIDEO
        LD      DE,SECTOR
        LD      BC,4
        LDIR   
        LD      DE,CUREVENT
        LDI     ; ¤à¥á áªà¨¯â 
        LDI     ;
        LD      DE,CURENDOFVIDEO
        LDI    
        LDI    

        LD      HL,LASTSND
        LD      DE,LASTSND+1
        LD      BC,SNDLEN-1
        LD      (HL),0X80
        LDIR   

        CALL    READ_P1
       XOR      A
       OUT      (0XFE),A

        LD      HL,0
        LD      (SOUNDFRAME),HL
        LD      HL,(CUREVENT)
        LD      E,(HL)
        INC     HL
        LD      D,(HL)
        INC     HL
        LD      (CUREVENT),HL
        LD      (EVENTTIME),DE ;ª®£¤  ¡ã¤¥â ¯¥à¢®¥ ᮡë⨥
        LD      HL,NEWPLANEOK
        LD      (JPENDOFVIDEO),HL ;¯®á«¥ ª ¦¤®£® ª ¤à 
        XOR     A
        LD      (CURKEY),A ;§ ¯à¥é ¥¬ ª­®¯ª¨, ¯®ª  ­¥â áâ५ª¨
       LD       HL,BADBIBIK
       LD       (keySND),HL

        EXX    
        LD      HL,LASTSND
varcovport := $+1
        LD      C,COVPORT
        EXX    
SNDLOOP
        CALL    INKEY
        LD      A,C
OLDKEY := $+1
        CP      0
        LD      (OLDKEY),A
        JR Z,KEYOFF ;¥á«¨ á®áâ. ª­®¯®ª ­¥ ¬¥­ï«®áì - ®¡å®¤¨¬
CURKEY := $+1
        LD      A,-1
        CP      -1
        JR NZ,KEYOFF ;¥á«¨ 㦥 ­ ¦¨¬ «¨ çâ®-â® - ®¡å®¤¨¬
        LD      A,C
        LD      (CURKEY),A
NEEDKEY := $+1
        CP      111
        JR Z,KEYGOOD
        INC     A
keySND := $+1
        CALL    NZBADBIBIK ;Z=®â¯ãá⨫¨, NZ=­ ¦ «¨
                        ;  ¨§ ¨­âà® ¢ë室¨âì ­ ¤® ¨ â ª,¨ í¤ ª
        JR      KEYOFF
KEYGOOD
        CALL    GOODBIBIK
KEYOFF
SOUNDFRAME := $+1
        LD      HL,0
EVENTTIME := $+1
        LD      DE,0
        OR      A
        SBC     HL,DE
        ADD     HL,DE
        INC     HL
        LD      (SOUNDFRAME),HL
        JR NZ,NOEVENT
CUREVENT := $+1
        LD      HL,0
        LD      E,(HL) ;⨯ ᮡëâ¨ï
        INC     HL    ;
        LD      D,(HL) ;
        INC     HL
        LD      C,(HL) ;¯ à ¬¥âà ᮡëâ¨ï
        INC     HL    ;
        LD      B,(HL) ;
        INC     HL
        LD      (EVENTPARAM),BC
       PUSH     HL
        LD      ($+5),DE
        CALL    0
       POP      HL
        LD      E,(HL) ;¢à¥¬ï á«¥¤ãî饣® ᮡëâ¨ï
        INC     HL    ;
        LD      D,(HL) ;
        INC     HL
        LD      (EVENTTIME),DE
        LD      (CUREVENT),HL
NOEVENT

       IF       sound=0
        LD      IXL,sectcycl-2 ;­¥ -1!
        JP      SECTLOOP
       ENDIF   
       ;ç⥭¨¥ ᥪâ®à  §¢ãª  ¨ ¤®¨£à뢠­¨¥ ®áâ âª 
     ;¤®¨£à뢠¥¬ ®áâ â®ª §¢ãª  ¡¥§ 128 ¡ ©â (¢à¥¬ï ç⥭¨ï)
        LD      C,LOW (hddstat)
        LD      DE,-1
         EXX   
         outim
         EXX   
        LD      HL,pusto
sldoigr
                IF atm=1;       IFN     atm
        IN      A,(C)
        LD      A,A
         OR     A
         JR C,$+2
        LD      A,H
       IN       A,(LOW (hddstat))
        ADD     A,(HL)
        INC     A
        LD      A,(HL)
        LD      A,A
        ADC     A,H
        SUB     L
        LD      A,A
    PUSH        HL
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
        EXX    
        OUTI   
        EXX    
    SET 5,A
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
    POP HL
        EXX    
        OUTI   
       ELSE     ;~atm
        IN      A,(LOW (hddstat))
        LD      A,A
         OR     A
         JR C,$+2
       IN       A,(LOW (hddstat))
        ADD     A,(HL)
        INC     A
        LD      A,(HL)
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
    NOP
        EXX    
        outim
        EXX    
    LD  C,H
    SET 5,A
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
        EXX    
        outim
       ENDIF   
        LD      A,H
        EXX    
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;        CP    'SNDLEN+'LASTSND-1
        JR C,sldoigr
        EXX    
        LD      HL,LASTSND+SNDLEN-256
        EXX    
        LD      HL,LASTSND
        LD      BC,LOW (hdddatlo+0X0000) ;B=0X00 (2*128)
        LD      DE,0
RDSND0
                IF atm=1;      IFN      atm
        INC     B
        IN      A,(C)
        DEC     B
         OR     A
         JR C,$+2
        EXX    
        OUTI   
        EXX    
       IN       A,(LOW (hddstat))
        ADD     A,(HL)
        INC     A
        LD      A,(HL)
        LD      A,A
        ADC     A,H
        SUB     L
        LD      A,A
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
    PUSH        HL
    POP HL
    SET 5,A
        EXX    
        OUTI   
        EXX    
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
       ELSE     ;~atm
        IN      A,(LOW (hddstat))
         OR     A
         JR C,$+2
        EXX    
        outim
        EXX    
       IN       A,(LOW (hddstat))
        ADD     A,(HL)
        INC     A
        LD      A,A
                REPT 4;        DUP      4
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     L
        IN      A,(LOW (hdddathi))
        LD      (HL),A
        INC     L
                ENDM;        EDUP      
    LD  C,H
    SET 5,A
        EXX    
        outim
        EXX    
                REPT 3;        DUP      4
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     L
        IN      A,(LOW (hdddathi))
        LD      (HL),A
        INC     L
                ENDM;        EDUP      
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     L
        IN      A,(LOW (hdddathi))
        LD      (HL),A
;        ORG    $-1
        INC     HL
       ENDIF   
        LD      A,H
                CP HIGH (SNDLEN+LASTSND);        CP     'SNDLEN+'LASTSND
        JR C,RDSND0
        EXX    
        LD      HL,LASTSND
        outim
        EXX    
        LD      IXL,sectcycl
        JP      LOOPNEXTSEC ;1-¥ §­ ª®¬¥áâ® - á ¡¨â®¬ 7
NEWPLANE
       IF       atm=0
       IN       A,(LOW (hdddathi))
       ENDIF   
curplane := $+1
        LD      A,0X17
;¯®à冷ª ®¡à ¡®âª¨: SCR0(lo,hi), SCR1(lo,hi)
                       ;0X1C,0X1D      0X16,0X17
                  ;ATM ;0X19,0X1D      0X13,0X17
                IF atm=1;      IFN      atm
        XOR     4
        BIT     2,A
      ELSE     
        XOR     1
        BIT     0,A
      ENDIF    
        JR NZ,NONEWSCR
        XOR     0X1C!0X16 ;=0X19!0X13 ;=0X0A
        INC     L
        JP      Z,ENDOFVIDEO
        DEC     L
JPENDOFVIDEO := $+1
        JP      NEWPLANEOK ;ENDOFVIDEODEAD; ENDOFVIDEO
NEWPLANEOK
NONEWSCR
        LD      (curplane),A
       PUSH     BC
        LD      BC,32765
        OUT     (C),A
       POP      BC
        JP      NEWPLQ
SECTLOOP
                IF atm=1;       IFN     atm
        LD      BC,0XF20F ;B=0XF2 (18*113)
        LD      DE,39
       ELSE    
        LD      B,113
       ENDIF   
         EXX   
         outim
         EXX   
FRAMELOOP
                IF atm=1;       IFN     atm
        IN      A,(C)
       ELSE    
        IN      A,(LOW (hdddatlo))
       ENDIF   
        LD      L,A
         RLA   
         JR C,NEWPLANE
NEWPLQ  LD      H,HIGH (TY);'TY        ;22
                IF atm=1;       IFN     atm
        LD      A,H
       ENDIF   
       IN       A,(LOW (hdddathi))
        ADD     A,(HL)
        INC     H
        LD      H,(HL)
        LD      L,A          ;33
                IF atm=1;       IFN     atm
        ADC     A,H
        SUB     L
        LD      H,A
    PUSH        HL
       ELSE    
    LD  C,H              ;4
       ENDIF   
     ;HL=screen
                IF atm=1;       IFN     atm
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI
       ELSE    
                REPT 3;        DUP      4
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     H
        IN      A,(LOW (hdddathi))
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     H
        IN      A,(LOW (hdddathi))
        LD      (HL),A
       ENDIF   
;        ORG    $-1
                         ;172
                IF sound=1;       IFN   sound
        EXX    
        outim
        EXX                  ;24
       ENDIF   
                IF atm=1;       IFN     atm
    POP HL
       ELSE    
    LD  H,C
       ENDIF   
    SET 5,H              ;12
                IF atm=1;       IFN     atm
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI
       ELSE    
                REPT 3;        DUP      4
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     H
        IN      A,(LOW (hdddathi))
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hdddatlo))
        LD      (HL),A
        INC     H
        IN      A,(LOW (hdddathi))
        LD      (HL),A
       ENDIF   
;        ORG    $-1
                         ;172
                IF atm=1;       IFN     atm
        DEC     B ;¤«ï ç¥â­®á⨠¯®àâ  ¤ ­­ëå
       ENDIF   
                IF sound=1;       IFN   sound
        EXX    
        outim
        EXX                  ;24
       ENDIF   
        DJNZ    FRAMELOOP   ;13 ;476 PENT / 576 ATM
      ;®áâ â®ª ᥪâ®à  (14 ¡ ©â)
                REPT 7;        DUP      7
                IF atm=1;       IFN     atm
        IN      A,(C)
       ELSE    
        IN      A,(LOW (hdddatlo))
       IN       A,(LOW (hdddathi)) ;ZX Evo fix
       ENDIF   
                ENDM;        EDUP                   ;77 PENT / 84 ATM
LOOPNEXTSEC
        LD      HL,SECTOR+3
        INC     (HL)
        DEC     HL
        JR Z,$-2           ;29*N-5 (¬®¦­® áç¨â âì 24)

   ;â¨¯ë ª®¬ ­¤ ¤®«¦­ë ᮢ¯ ¤ âì á ⥬¨, ª-¥ ¢ £« ¢­®¬ 横«¥
        LD      C,LOW (hddstat)
        LD      DE,-1
        LD      HL,pusto
        EXX    
        outim
        EXX                  ;24
BSYDOATAPI
                IF atm=1;       IFN     atm
        IN      A,(C)
        LD      A,A
        LD      A,H
        INC     A
        ADC     A,H
        SUB     L
        LD      A,A
    PUSH        HL
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
    POP HL
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
        XOR     A
       ELSE     ;~atm
        IN      A,(LOW (hddstat))
        LD      A,A
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
        EXX    
       NOP     
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti
        outim
_nouti
        EXX    
       SET      5,A
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti2
        outim
_nouti2
        EXX    
       ENDIF   
        IN      A,(LOW (hddstat))
        BIT     7,A
        JR NZ,BSYDOATAPI

;SEND_ATAPI
        LD      A,(REG_SDH)
       ;AND 16
       ;OR 0XA0
        OUT     (LOW (hddhead)),A  ;38
        XOR     A
        OUT     (LOW (hddcyllo)),A ;15
        LD      A,8
        OUT     (LOW (hddcylhi)),A ;18
        LD      A,0XA0
        OUT     (LOW (hddcmd)),A   ;18

        LD      C,LOW (hddstat)
        LD      DE,-1
         EXX   
         outim
         EXX   
        LD      HL,pusto
sAdrq
                IF atm=1;       IFN     atm
        IN      A,(C)
        LD      A,A
        LD      A,H
        INC     A
        ADC     A,H
        SUB     L
        LD      A,A
    PUSH        HL
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
    POP HL
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
        XOR     A
       ELSE     ;~atm
        IN      A,(LOW (hddstat))
        LD      A,A
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
        EXX    
       NOP     
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti3
        outim
_nouti3
        EXX    
       SET      5,A
                REPT 7;        DUP      8
        IN      A,(LOW (hddstat))
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(LOW (hddstat))
        LD      A,(HL)
;        ORG    $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti4
        outim
_nouti4
        EXX    
       ENDIF   
        IN      A,(LOW (hddstat))
        BIT     3,A
        JR Z,sAdrq

        LD      HL,AP_READ
                REPT 2;       DUP       2
                IF atm=1;       IFN     atm
        INC     HL
        LD      A,(HL)
        LD      BC,hdddathi
        OUT     (C),A
        DEC     HL
        LD      A,(HL)
        LD      BC,hdddatlo
        OUT     (C),A
        INC     HL
        INC HL        ;117*2=244(+10)
                DUPL 7,0;        DS     7
       ELSE    
        LD      C,(HL)
        INC     HL
        LD      A,(HL)
        OUT     (LOW (hdddathi)),A
        LD      A,C
        OUT     (LOW (hdddatlo)),A
        INC     HL           ;52
       ENDIF   
                ENDM;       EDUP       
         EXX   
         outim
         EXX   
                REPT 2;       DUP       2
                IF atm=1;       IFN     atm
        INC     HL
        LD      A,(HL)
        LD      BC,hdddathi
        OUT     (C),A
        DEC     HL
        LD      A,(HL)
        LD      BC,hdddatlo
        OUT     (C),A
        INC     HL
        INC HL        ;117*2=244(+22)
                DUPL 7,0;        DS     7
       ELSE    
        LD      C,(HL)
        INC     HL
        LD      A,(HL)
        OUT     (LOW (hdddathi)),A
        LD      A,C
        OUT     (LOW (hdddatlo)),A
        INC     HL           ;52
       ENDIF   
                ENDM;       EDUP       
         EXX   
         outim
         EXX   

                REPT 2;       DUP       2
                IF atm=1;       IFN     atm
        INC     HL
        LD      A,(HL)
        LD      BC,hdddathi
        OUT     (C),A
        DEC     HL
        LD      A,(HL)
        LD      BC,hdddatlo
        OUT     (C),A
        INC     HL
        INC HL        ;
       ELSE    
        LD      C,(HL)
        INC     HL
        LD      A,(HL)
        OUT     (LOW (hdddathi)),A
        LD      A,C
        OUT     (LOW (hdddatlo)),A
        INC     HL           ;52
       ENDIF   
                ENDM;       EDUP       
     ;(£¤¥-â® 2000 ⠪⮢ ¨é¥â)
     ;(â®ç­¥¥, 20000 ª ¦¤ë© 10-© à §)
          ;XOR A
          ;IN A,(hddstat)
          ;RLCA       ;BSY
          ;JC $-4
        LD      C,LOW (hddstat)
        LD      DE,-1
         EXX   
         outim
         EXX   
        LD      HL,pusto
sldrq
                IF atm=1;       IFN     atm
        IN      A,(C)
        LD      A,A
        LD      A,H
        INC     A
        ADC     A,H
        SUB     L
        LD      A,A
    PUSH        HL
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
                REPT 7;        DUP      8
        INI    
        ADD     HL,DE
                ENDM;        EDUP      
                INI;        ORG $-1
    POP HL
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,$+4
        OUTI   
        EXX    
        XOR     A
       ELSE     ;~atm
        IN      A,(hddstat)
        LD      A,A
                REPT 7;        DUP      8
        IN      A,(hddstat)
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(hddstat)
        LD      A,(HL)
;        ORG    $-1
        EXX    
       NOP     
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti5
        outim
_nouti5
        EXX    
       SET      5,A
                REPT 7;        DUP      8
        IN      A,(hddstat)
        LD      A,(HL)
        INC     H
                ENDM;        EDUP      
        IN      A,(hddstat)
        LD      A,(HL)
;        ORG    $-1
        EXX    
       LD       A,H
                CP HIGH (SNDLEN)+HIGH (LASTSND)-1;       CP     'SNDLEN+'LASTSND-1
       JR NC,_nouti6
        outim
_nouti6
        EXX    
       ENDIF   
        IN      A,(LOW (hddstat))
        BIT     3,A
        JR Z,sldrq

        DEC     IXL
        JP      NZ,SECTLOOP
       IF       sound=0
        EXX    
        LD      HL,LASTSND
        EXX    
        LD      IXL,sectcycl-1
        LD      HL,SECTOR+3
        INC     (HL)
        DEC     HL
        JR Z,$-2           ;29*N-5 (¬®¦­® áç¨â âì 24)
        JP      SECTLOOP
       ELSE    
        JP      SNDLOOP
       ENDIF   

ENDOFVIDEO
        CALL    CLSATM
                IF 0;       IFN 0
        LD      HL,LEVEL
        INC     (HL)
        LD      A,(HL)
        CP      16
        JR C,EOVNOPRINT

        LD      A,(LIVES)
        ADD     A,"0"
        LD      (TLIVESN),A
        LD      HL,TLIVES
_y := 96
_x := 9
        xy2adr
        LD      DE,_a
        CALL    PRW

        LD      A,(LEVEL)
        CALL    CODEDIG
        LD      A,(LIVES)
        CALL    CODEDIG
        LD      A,(SCORE)
        CALL    CODEDIG
        LD      A,(SCORE+1)
        CALL    CODEDIG
        LD      HL,(SCORE)
        LD      A,(LIVES)
        XOR     L
        XOR     H
        LD      L,A
        LD      A,(LEVEL)
        XOR     L
        CALL    CODEDIG
        LD      HL,TCODEN
        LD      B,8
TCODELET0
        LD      A,(HL)
        AND     31
        ADD     A,"0"
        CP      ":"
        JR C,$+4
        ADD A,0X41-0X3A;        A,"A"-":"
        LD      (HL),A
        INC     HL
        DJNZ    TCODELET0

        LD      HL,TCODE
_y := 80
_x := 9
        xy2adr
        LD      DE,_a
        CALL    PRW
EOVNOPRINT
       ENDIF   
ENDOFVIDEODEAD
CURENDOFVIDEO := $+1
        LD      HL,TFILES
       PUSH     HL
        LD      HL,LASTSND
        CALL    READ_P2
       POP      HL
        JP      NEWVIDEO

CODEDIG
        LD      HL,TCODEN
        LD      B,8
CODEDIG0
        RLA    
        RL      (HL)
        INC     HL
        DJNZ    CODEDIG0
        RET    

TLIVES  DB      "   LIVES: 0",0
TLIVESN := $-2
TCODE   DB      "CODE: 00000000",0
TCODEN := $-9

PRW
;C=ä®­®¢ë© 梥â (¢ ¢¨¤¥  âਡãâ )
        LD      C,0
;IX=â ¡«¨æ  à áªà áª¨ ¡ãª¢ë ¯® áâப ¬
        LD      IX,BUK_W
        CALL    PRTXT88
        LD      A,(curplane)
        LD      BC,32765
        OUT     (C),A
        RET    
INKEY
;C=11LRDUBF (B=break)
        LD      A,254
        IN      A,(254)
        RRA    
        LD      A,239
        IN      A,(254)
        JR      C,UANOCAP
        LD      C,0XFF
        RRA         ;CS+"0" = "0"
        JR C,$+3
        DEC     C
        RRA    
        RRA         ;CS+"8"
        JR C,$+4
        RES     4,C
        RRA         ;CS+"7"
        JR C,$+4
        RES     2,C
        RRA         ;CS+"6"
        JR C,$+4
        RES     3,C
        LD      A,0XF7
        IN      A,(254)
        BIT     4,A ;CS+"5"
        JR NZ,$+4
        RES     5,C
        RLA         ;CS+"1"
        JR C,INKEYF
        RES     1,C
        JR      INKEYF
UANOCAP
        RRCA   
        RLA    
        RLA    
        OR      0XC2
        LD      C,A
        LD      A,0XDF
        IN      A,(254)
        RRA         ;"P"
        JR      C,$+4
        RES     4,C
        RRA         ;"O"
        JR      C,$+4
        RES     5,C
        LD      A,0XFB
        IN      A,(254)
        RRA         ;"Q"
        JR      C,$+4
        RES     2,C
        RRA    
        RRA         ;"E"
        JR      C,$+4
        RES     1,C
        LD      A,0XFD
        IN      A,(254)
        RRA         ;"A"
        JR C,$+4
        RES     3,C
INKEYF  LD      A,0X7F
        IN      A,(254)
        CPL    
        AND     31
        RET     Z
        RES     0,C
        RET    

CLSATM
                REPT 2;       DUP       2
;ç¨á⨬ ­¥¢¨¤¨¬ë© íªà ­
        CALL    CLSATMPLANE
;¯¥à¥ª«îç ¥¬ íªà ­
        LD      A,(curplane)
        XOR     8
        LD      (curplane),A
                ENDM;       EDUP       
        RET    
;ç¨á⨬ ­¥¢¨¤¨¬ë© íªà ­
CLSATMPLANE
        LD      A,(curplane)
        AND     0X18
        LD      C,A
        CPL    
        RRA    
        RRA    
        AND     2
        OR      C
        OR      5
        CALL    CLSPG
                IF atm=1;       IFN     atm
        SUB     4
       ELSE    
        DEC     A
       ENDIF   
CLSPG   LD      BC,32765
        OUT     (C),A
        LD      HL,0XC000
        CALL    CLS7999
        LD      HL,0XE000
CLS7999 LD      BC,7999
CLSI1   LD      D,H
                LD E,1
        LD      (HL),L
        LDIR   
        RET    

SCANCAT
     ;¡¥à¥¬ ¯®á« á¥áá¨î (¯à¥¤¯®á« § ¯¨áì)
        LD      HL,SECBUF+1
        LD      A,(HL)
        ADD     A,-10
        LD      L,A
;£à㧨¬ ­ ç «® á¥áᨨ (17*0X800 ¡ ©â)
        LD      D,7
        CALL    LOADER
        LD      B,16
SCANL0  PUSH    BC
        LD      B,1
        CALL    LOADERLOOP
        POP     BC
        DJNZ    SCANL0
        LD      C,0XA2
        ADD     HL,BC
       ;CY=0
        CALL    LOADER ;£à㧨¬ ª®à­¥¢®© ª â «®£
       ;HL=SECBUF
        LD      DE,TFILES
FNDNEWFILE
        LD      HL,SECBUF
FNDFILELOOP
       PUSH     HL
        LD      C,33
        ADD     HL,BC
        LD      C,4
       PUSH     DE
FNDFI0  LD      A,(DE)
        CPI    
       JR NZ,FNDFIN
        INC     DE
        JP      PE,FNDFI0
       POP      DE
       POP      HL
        LD      C,6
        ADD     HL,BC
        LD      C,4
        LDIR   
FNDFIOK         REPT 4
                INC     DE
                ENDM
        LD      A,D
                CP HIGH (ENDFILES);        CP   'ENDFILES
        JR NZ,FNDNEWFILE
        LD      A,E
        CP      LOW (ENDFILES)
        JR NZ,FNDNEWFILE
        RET    
FNDFIN
       POP      DE
       POP      HL
PADDIN0 LD      C,(HL)
        INC     HL
        LD      B,(HL)
        DEC     HL
       LD       A,B
       OR       C
       JR NZ,NOPADDING
        INC     H
        LD      L,A
NOPADDING
       INC      B
       DJNZ     CATEND ;B<>0
        ADD     HL,BC
        LD      A,H
        CP      64
       JR NC,FNDFILELOOP
CATEND
        LD      A,-2 ;­¥â ä ©« 
        LD      (DE),A
                REPT 4
        INC     DE
                ENDM
        JR      FNDFIOK

LOADER
;£à㧨¬ ä ©«
;HL 㪠§ë¢ ¥â ­  ¯®«¥ ª®®à¤¨­ â ä ©«  ¢ motorola ¯®à浪¥
;CY=1: à §¬¥à ¢ DE
;CY=0: à §¬¥à ¢ (HL+4)
       PUSH     DE
        LD      DE,SECTOR
        LD      BC,4
        LDIR   
       POP      DE
        JR C,$+5
         LD     E,(HL)
         INC    HL
         LD     D,(HL)
        EX DE,HL       
        SCF    
        LD      DE,2048
        INC     B
        SBC     HL,DE
        JR NC,$-3
LOADERLOOP
        LD      HL,SECBUF
       PUSH     HL
LOADER0 PUSH    BC
        CALL    READCD
       CALL     READ_P2 ;!!! ¢ ¡ã⥠®­ ¢å®¤¨â ¢ READCD
       LD       BC,2048
       ADD      HL,BC
        PUSH    HL
        LD      HL,SECTOR+3
        INC     (HL)
        DEC     HL
        JR Z,$-2
        POP     HL
        POP     BC
        DJNZ    LOADER0
       POP      HL
        RET    

READ_P1
       PUSH     BC
       PUSH DE
       PUSH HL
        CALL    READCD
       POP      HL
       POP DE
       POP BC
        RET    
READ_P2
       PUSH     BC
       PUSH DE
       PUSH HL
        CALL    READ_S
        CALL    READ_S
        CALL    READ_S
        CALL    READ_S
        CALL    NO_BSY
       POP      HL
       POP DE
       POP BC
        RET    
NXTSEC
       PUSH     HL
        LD      HL,SECTOR+3
        INC     (HL)
        DEC     HL
        JR Z,$-2
       POP      HL
        RET    

                IF atm=1;       IFN     atm
OUTSHAD
        LD      IX,10835
        PUSH    IX
        JP      0X3D2F
       ENDIF   

;—’…ˆ… 512 ¡ ©â
READ_S
                IF smuc=1;       IFN    smuc
        LD      B,0
READ_S0 PUSH    BC
        LD      BC,hdddatlo
        CALL    IN_A
        LD      (HL),A
        INC     HL
        LD      BC,hdddathi
        CALL    IN_A
        LD      (HL),A
        INC     HL
        POP     BC
        DJNZ    READ_S0
       ELSE     ;nemo
        LD      C,hdddatlo
                REPT 256;        DUP    256
        INI    
        INC     C
        INI    
        DEC     C
                ENDM;        EDUP      
       ENDIF   
        RET    

OUT_A
                IF smuc=1;       IFN    smuc
                IF atm=1;      IFN      atm
        PUSH    AF
        PUSH BC
        CALL    OPENPORTS
        POP     BC
        POP AF
        OUT     (C),A
        JR      CLOSEPORTS
OPENPORTS
        LD      A,%10101000;11
OPENPORTS_A
        LD      BC,0X2A53
        PUSH    BC
        LD      BC,0X4177
        JP      0X3D2F
      ELSE     
        LD      IX,0X3FF0
        PUSH    IX
        JP      0X3D2F
      ENDIF    
       ELSE     ;nemo
        OUT     (C),A
        RET    
       ENDIF   

IN_HDDSTAT
        LD      BC,hddstat
IN_A
                IF smuc=1;       IFN    smuc
                IF atm=1;      IFN      atm
        PUSH    BC
        CALL    OPENPORTS
        POP     BC
        IN      A,(C)
CLOSEPORTS
        PUSH    AF
        PUSH BC
        LD      A,%10101000;11
        LD      BC,0XFF77
        OUT     (C),A
        POP     BC
        POP AF
        RET    
      ELSE     
        LD      IX,0X3FF3
        PUSH    IX
        JP      0X3D2F
      ENDIF    
       ELSE    
        IN      A,(C)
        RET    
       ENDIF   

;Ž‘‹€’œ ŠŽŒ€„“ € ‚ˆ’
HDSC
        LD      BC,hddcmd
        CALL    OUT_A
;Ž†ˆ„€ˆ… Ž‘‚ŽŽ†„…ˆŸ “‘’Ž‰‘’‚€
NO_BSY
        CALL    IN_HDDSTAT
        RLCA   
        RET     NC
        JR      NO_BSY
;Ž†ˆ„€ˆ… ƒŽ’Ž‚Ž‘’ˆ ……„€—ˆ „€›•
WAIT_DRQ
        CALL    IN_HDDSTAT
       OR       A
        BIT     3,A
        RET     NZ
        JR      WAIT_DRQ

;—’…ˆE —ˆ‘‹€ ˆ‡ …ƒˆ‘’€ –ˆ‹ˆ„€
LEN_TO_HL
        LD      BC,hddcyllo
        CALL    IN_A
        LD      L,A
        LD      BC,hddcylhi
        CALL    IN_A
        LD      H,A
        RET    

;IN:HL-€„…‘ ˆ…Œ€ „€›•
;   BC-ŠŽ‹-‚Ž €‰’
TRANS_IN
        PUSH    BC
        CALL    NO_BSY
        POP     BC
       RET      C
        PUSH    BC
        CALL    WAIT_DRQ
        POP     BC
       RET      C
        INC     BC
        SRL     B
        RR      C
TR_IN0  PUSH    BC
        LD      BC,hdddatlo
        CALL    IN_A
        LD      (HL),A
        INC     HL
        LD      BC,hdddathi
        CALL    IN_A
        LD      (HL),A
        POP     BC
        CPI    
        JP      PE,TR_IN0
        RET    

;……„€—€ ATAPI-€Š…’€
SEND_ATAPI
REG_SDH := $+1
       LD       A,0XB0
       LD       BC,hddhead
       CALL     OUT_A
        LD      BC,hddcyllo
        XOR     A
        CALL    OUT_A
        LD      BC,hddcylhi
                LD A,HIGH (2048);        LD     A,'2048
        CALL    OUT_A
        LD      A,0XA0
        CALL    HDSC
        LD      B,6
TR_OUT0 PUSH    BC
        INC     HL
        LD      A,(HL)
        LD      BC,hdddathi
        CALL    OUT_A
        DEC     HL
        LD      A,(HL)
        LD      BC,hdddatlo
        CALL    OUT_A
        INC     HL
        INC HL
        POP     BC
        DJNZ    TR_OUT0
        RET    

READCD
;—’…ˆ… ‘…Š’Ž€
LOAD_SECTOR_
       PUSH     HL
        LD      HL,AP_READ
        CALL    SEND_ATAPI
       POP      HL
;¡ë¢ ¥â á¨âã æ¨ï,çâ® CHECK CONDITION (D0 áâ âãá )=0,
;  ¯à¨ í⮬ DRQ ­¥ ¢ë¤ ¥âáï!
       ;CALL IN_HDDSTAT
       ;RRA
        CALL    NO_BSY ;¨­ ç¥ ¢¨á­¥â ¯à¨ ¨­¨æ-樨 CD
       ;CALL WAIT_DRQ ;§¤¥áì ¢¨á­¥â, ¥á«¨ ¨­¨â¨âì ᫨誮¬ à ­®
                 ;¯®á«¥ ¢ë室  à §£®­ï¥âáï, ¦¤¥â ª­®¯ªã ¨ ç¨â ¥â
     ;®¦¨¤ ­¨¥ DRQ ¯® à¥æ¥¯âã Budder' 
        LD      DE,0
RDCDDRQ CALL    IN_HDDSTAT
        BIT     3,A
       RET      NZ ;¯®â®¬ ¯à®ç¨â ¥¬
        INC     DE
        BIT     2,D ;4,D
        JR      Z,RDCDDRQ
        PUSH    HL
        LD      HL,AP_00
        CALL    SEND_ATAPI
        POP     HL
        JR      LOAD_SECTOR_

;ATAPI-€Š…’ "“‘’›˜Š€"
AP_00
        DW      0
                DUPL 10,0;        DS    10

;ATAPI-€Š…’ "SPEED 1x"
AP_1x
        DW      0XBB
        DB      0
        DB      176 ;1x=176k/s
                DUPL 8,0;        DS     8

;ATAPI-€Š…’ "—’…ˆ…"
AP_READ
                IF 0;       IFN 0
        DW      0XBE   ;"READ CD"
SECTOR  DB      0,0,0,0
        DB      0
        DB      0,1   ;=1 ᥪâ®à
        DB      0X10   ;ç¨â ¥¬ ⮫쪮 ¤ ­­ë¥
        DB      0,0
       ELSE    
        DW      0X28   ;"READ(10)"
SECTOR  DB      0,0,0,0
        DB      0
        DB      0,1   ;=1 ᥪâ®à
        DB      0
        DB      0,0
       ENDIF   
AP_READTOC
        DW      0X43   ;SCMSF=0,â.¥.ᥪâ®àë,  ­¥ MSF
        DB      0     ;FORMAT=0:¢á¥ á¥áᨨ
                DUPL 3,0;        DS     3
        DB      0     ;á 1-© á¥áᨨ
        DB      HIGH (2048);'2048 ;¤«¨­  â ¡«
        DB      LOW (2048)
        DB      0X00   ;FUNC
                DUPL 2,0;        DS     2

       IF       atm=0
pause
;162t - 17 (call) - 10 (ret) = 135
                REPT 11;       DUP      11
        JR      $+2
                ENDM;       EDUP       
        NOP     ;136
        RET    
       ENDIF   

evEMPTY
        RET    

evRIGHTOFF
        LD      DE,HINTOFF
        CALL    evRIGHTPM
        JR      UMER
evRIGHTON
        LD      A,%11101111
        LD      (NEEDKEY),A
        LD      A,-1
        LD      (CURKEY),A
        CALL    ASKBIBIK
        LD      DE,HINTRIGHT
evRIGHTPM
_y := 88
_x := 31
        xy2adr
        LD      HL,_a
        JR      evLRPM
evLEFTOFF
        LD      DE,HINTOFF
        CALL    evLEFTPM
        JR      UMER
evLEFTON
        LD      A,%11011111
        LD      (NEEDKEY),A
        LD      A,-1
        LD      (CURKEY),A
        CALL    ASKBIBIK
        LD      DE,HINTLEFT
evLEFTPM
_y := 88
_x := 0
        xy2adr
        LD      HL,_a
evLRPM
        LD      A,(curplane)
                       ;0X1C,0X1D 0X16,0X17
                   ;ATM;0X19,0X1D 0X13,0X17
        OR      7
       PUSH     AF
       PUSH     DE
       PUSH HL
        CALL    evSPR16PP
       POP      HL
       POP DE
       POP      AF
        SUB     2
        CALL    evSPR16PP
        LD      A,(curplane)
        LD      BC,32765
        OUT     (C),A
        RET    

evFIREOFF
        LD      DE,HINTOFF
        CALL    evFIREPM
UMER
        LD      A,(NEEDKEY)
        LD      C,A
        LD      A,(CURKEY)
        CP      C
        RET     Z
        INC     A
        CALL    Z,BADBIBIK ;­¥ ­ ¦¨¬ «¨ ­¨ç¥£® - ᬥàâì
EVENTPARAM := $+1
        LD      HL,0
        LD      (CURENDOFVIDEO),HL
        LD      HL,ENDOFVIDEODEAD
        LD      (JPENDOFVIDEO),HL
        RET    
evFIREON
        LD      A,%11111110
        LD      (NEEDKEY),A
        LD      A,-1
        LD      (CURKEY),A
        CALL    ASKBIBIK
        LD      DE,HINTFIRE
evFIREPM
_y := 184
_x := 28
        xy2adr
        LD      HL,_a
        JR      evUDPM
evDOWNOFF
        LD      DE,HINTOFF
        CALL    evDOWNPM
        JR      UMER
evDOWNON
        LD      A,%11110111
        LD      (NEEDKEY),A
        LD      A,-1
        LD      (CURKEY),A
        CALL    ASKBIBIK
        LD      DE,HINTDOWN
evDOWNPM
_y := 184
_x := 15
        xy2adr
        LD      HL,_a
        JR      evUDPM
evUPOFF
        LD      DE,HINTOFF
        CALL    evUPPM
        JR      UMER
evUPON
        LD      A,%11111011
        LD      (NEEDKEY),A
        LD      A,-1
        LD      (CURKEY),A
        CALL    ASKBIBIK
        LD      DE,HINTUP
evUPPM
_y := 0
_x := 15
        xy2adr
        LD      HL,_a
evUDPM
        LD      A,(curplane)
                       ;0X1C,0X1D      0X16,0X17
                  ;ATM ;0X19,0X1D      0X13,0X17
        OR      7
        PUSH    AF
        PUSH HL
        CALL    evUD88
        POP     HL
        POP AF
        INC     HL
evUD88
       PUSH     AF
       PUSH     DE
       PUSH HL
        CALL    evSPR8PP
       POP      HL
       POP DE
       POP      AF
        SUB     2
        CALL    evSPR8PP
        LD      A,(curplane)
        LD      BC,32765
        OUT     (C),A
        RET    

evSPR16PP
        LD      BC,32765
        OUT     (C),A
       PUSH     AF
        PUSH    HL
        PUSH    HL
        CALL    HINTSTOLB
        POP     HL
        SET     5,H
        CALL    HINTSTOLB
        POP     HL
       POP      AF
                IF atm=1;       IFN     atm
        SUB     4
       ELSE    
        DEC     A
       ENDIF   
        LD      BC,32765
        OUT     (C),A
        PUSH    HL
        CALL    HINTSTOLB
        POP     HL
        SET     5,H
HINTSTOLB
                IF atm=1;       IFN     atm
        LD      BC,40
                REPT 15;        DUP     16
        LD      A,(DE)
        INC     E
        LD      (HL),A
        ADD     HL,BC
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
       ELSE    
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
;        ORG    $-1
        LD      A,L
        ADD     A,32
        LD      L,A
        LD      A,H
        SUB     7
        LD      H,A
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
       ENDIF   
;        ORG    $-1
        RET    
evSPR8PP
        LD      BC,32765
        OUT     (C),A
       PUSH     AF
        PUSH    HL
        PUSH    HL
        CALL    HINTSTOLB8
        POP     HL
        SET     5,H
        CALL    HINTSTOLB8
        POP     HL
       POP      AF
                IF atm=1;       IFN     atm
        SUB     4
       ELSE    
        DEC     A
       ENDIF   
        LD      BC,32765
        OUT     (C),A
        PUSH    HL
        CALL    HINTSTOLB8
        POP     HL
        SET     5,H
HINTSTOLB8
                IF atm=1;       IFN     atm
        LD      BC,40
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        ADD     HL,BC
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
       ELSE    
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
       ENDIF   
;        ORG    $-1
        RET    

                IF 0;       IFN 0
CLSTOLB
                IF atm=1;       IFN     atm
        LD      BC,40
        XOR     A
                REPT 16;        DUP     16
        LD      (HL),A
        ADD     HL,BC
                ENDM;        EDUP      
       ELSE    
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
;        ORG    $-1
        LD      A,L
        ADD     A,32
        LD      L,A
        LD      A,H
        SUB     7
        LD      H,A
                REPT 7;        DUP      8
        LD      A,(DE)
        INC     E
        LD      (HL),A
        INC     H
                ENDM;        EDUP      
        LD      A,(DE)
        INC     E
        LD      (HL),A
       ENDIF   
;        ORG    $-1
        RET    
       ENDIF   
OUTA
       PUSH     BC
        LD      C,A
        LD      A,(curplane)
        AND     0X18
        OR      C
        LD      BC,32765
        OUT     (C),A
       POP      BC
        RET    

                include galarr.a80;        INCLUDE      "GALARR",0X84
SCORE   DW      0
LIVES   DB      0
LEVEL   DB      0

                include galscrip.a80;        INCLUDE    "GALSCRIP",0XC4
;       DISPLAY $
                DUPL LOW (-$),0;        DS      .(-$)
f88             binclude 88kriv.bin,0,0X800;     INCBIN "88kriv$",0X800
loa
end
                IF 0
                DUPL 0XC000-$,0;        DS      0XC000-$
;       DISPLAY /T,end
        ORG     0X5B00
ObjTab  DB      "AUTORUN "
        DB      "Z"
        DW      begin,end-begin
        DB      16
        DB      "X "
       IF       atm
        DB      "PENT    "
        DB      "C"
        DW      0X8200,0X3E00
        DB      16
        DB      "  "
       ENDIF   
                ENDIF
;               include saveobj5.a80;        INCLUDE    "SAVEOBJ*",0XC0