; WORM-255F tinygame
; by Shiru Otaku/ANGEL2 18.o9.2oo2
; mailto: shiru@mail.ru

;  ணࠬ  ᮡ  "⮭" ࠧ஬  255 .
; ७   ᤥ  ,   128    ਬ窠
;   ࠢ  :).

;   ᯮ  ணࠬ 48basic rom ( BREAK).
;   ᯮ 祭 񭭮 RND -  祭 ॣ R.
;    㪮 䥪 १ ਯ (楫 2;).
;  ⮩ ᨨ -஫  ( FLASH).
;  ⮩ ᨨ   뤥 ⤥ 梥⮬.
;   ࠢ  뫮  ࠭   ᪠ ( 祭 ਡ⮢
; ᯮ  INK  PAPER).

; ࠢ - SINCLAIR JOY.
; 室   - BREAK KEY (IY  ⥪  ).

; ᨬ쭠   - 255.


WORMBUF  EQU #C16F      ;   (⠪  ⮬ 
                ;訩   ⠪ ᯮ 
                ;樠樨  .

WORMCOL  EQU #2D        ;梥 , ⮫쪮 ⭮ ᫮ (bit 0 is set).
RAMKCOL  EQU #09        ;梥  , ⮫쪮 ⭮ ᫮.


;堫...

     ORG #C000

;稭   -  ࠢ ।   ᪥,  
; ᫥⢨ .

START

;頥 ஢   ६ 㥬 ࠬ  -  룮 祬
;ࠧ쭮  ࠭  ᮢ ࠬ ( ).
;   㦭 ⮡  । ᠭ   , 
;梥.  㤥 ,  ஢ 祭    
; ਡ⮢ ( ).

; HL - 砫  ਡ⮢.

     LD HL,#5800

;ᨫ   梥⮬  ஢ .

     LD B,#20
     LD A,RAMKCOL
     LD (HL),A
     INC HL
     DJNZ $-2

;⥯ ᨬ 22 ப -    ࠩ, 30   0, ᫥
; ப ⮦  ࠩ.

     LD B,22
SUDA
     LD (HL),A
     INC HL

;祬 ᫨ 譨 横   DJNZ,  ७ (30 ) - 
;ॣ ,  ६⨬    ⠭ 䫠 ७.

     LD C,#1E
     LD (HL),0
     INC HL
     DEC C
     JR NZ,$-4
     LD (HL),A
     INC HL
     DJNZ SUDA

; ᨬ   ⮦  梥  ஢ .

     LD B,#20
     LD (HL),A
     INC HL
     DJNZ $-2

;樠㥬 ६ .    ࠢ 4-. 쭮
; 㤥 3 , 4- ⮬- ᫥   - 㫥
;梥⮬ 뢮,    ⪨ ࠭  横.

     LD A,4
     LD (WORMLEN), A

;ᨬ  ६ 梥   -  (⨯ )
;    ᯮ짮 RRA. ६ 㦭 ⮡ 梥
;   প,   ࠧ-.

     RRA
     LD (BORDCOL), A

;樠㥬  .  ᯮ 訩  
; (࠭  HL)  ⮣ ⮡      
;訩   ਡ⮢,   祭 横 ६.
;横  ⮬   祬 ॡ (#71 ࠧ),  
;⢥ -      横  DJNZ.

     LD HL,WORMBUF
     ADD A,L

     LD (HL),A
     INC HL
     LD (HL),#59
     INC HL
     DEC A
     JR NZ,$-6

;ᨬ  ६ ࠢ     DEC HL (#2B)
;        .

     LD A,#2B
     LD (WORMDIR), A

;뢠 ணࠬ 뢮  -஫. ணࠬ
;ᯮ짮 ⮬-    㦭  ࠧ - 
;   ꥤ ண ஫.

     CALL GENKROL


; 稭 ᭮ 横 .

MAINLOOP

; ⢥  ६ BORDCOL ᯮ אַ 㪠  
;࠭  LD A,n -   譨  
;      ॣ A ॠ쭮 ࠭  0,  梥 .

BORDCOL=$+1
     LD A,0

;ᨬ    梥.

     OUT (#FE), A

; ᨬ  ६ BORDCOL  -  ᫥騩 ࠧ  ⠭
;ᨭ (..  HALT -  ᯥ 㢨 ।騩 梥).

     LD A,1
     LD (BORDCOL), A

;६ KROLADR -  ⥪饣 ஫   ਡ⮢ -
;⠪ ࠭   (LD HL,nn).

KROLADR=$+1
     LD HL,0

;६ 梥 ஫ ⮦ ࠭  .  㦭  
;஫ -    ᯮ짮 FLASH ⮬-   頫
;ᮡ⢥ ࠭ ,     ⠬   (  
;㤥    㦭 梥 ⠭  BASIC-稪:)
;砫쭮  ६ ࠢ #36 -  INK  PAPER.

KROLCOL=$+1
     LD A,#36
     LD (HL),A

;㥬 .   ࠭   LD B,n.   
;  ॠ쭮  1 , 祬 ࠭  ⮩ ६ - ᫥
;墮  㥬     梥⮬.

WORMLEN=$+1
     LD B,0
     LD HL,WORMBUF

; ⥪饣    ࠭  ॣ A. 砫쭮  ࠢ
;, ..  㤥 뢮     砫 ( 
; ᪮쪮   ࠫ 墮).

     XOR A

;㥬 १ ⥪     IX -   祬 㦠
; 㤠  LD IX,nn ( ).

     PUSH HL
     POP IX

; 뢮 .

PRWORM0

;      DE (   ਡ⮢, 
;न -    뢠).

     LD E,(HL)
     INC HL
     LD D,(HL)
     INC HL

;ᨬ   ⮬  梥⮬  ॣ A.

     LD (DE),A

;ࢮ  (墮) ᨫ ,  ⥯  㧨  A 梥
;ᮡ⢥ 誨  ( ᪮  譥   横 
;ᬥ⥫ -   ࠧ:).

     LD A,WORMCOL

;६  뢮  ᤢ       墮 -
;᫨ ᤥ  ࠧ쭮  뢮,  ணࠬ ⠭ .
;..  IX   ࠭ ⮦    HL - ᯮ㥬 ⭮⥫쭮
;ᬥ饭,  ࠢ,   㫥 ᬥ饭    .

     LD (IX-2),E
     LD (IX-1),D
     INC IX
     INC IX
     DJNZ PRWORM0

;᫥ 横  DE ⠫    - ᫨  ⨬ 뤥 
;⤥ 梥⮬,    ( 룫廊  祭 ᨢ, ⠪ 
;   뤥,    ).  뤥 񭭮.
;મ

     XOR 64
     LD (DE),A

; 砩 ᫨   㢥  㥬 ᫥  
;  ᫥ 祩  (  㪠뢠 HL ᫥ 横 뢮).

     LD (HL),E
     INC HL
     LD (HL),D

;塞 HL  DE, .. ᥩ   ᭨    
; ਡ⮢,   㤮   ॣ HL.

     EX DE,HL

; BC  㦠 #20 - ⮡ ᫮ HL  BC  뫮  
;   .    (B)   㦠, ..
; ᫥ ᫥ DJNZ ࠢ .

     LD C,#20

;筮 ।      㦭   HL BC.
;  ⠪  ᤥ, ..  SUB HL,BC     
;    ADD HL,BC. ஡   譥 ,   ⮬
;    塞 ᠬ騬 ,   
;  諮- ஢   ( ⠫ ⠢
;NOP),   ६    ࠢ  ஢ ᥣ
;. ⮬  ⨬    㧪   DE 祭 #FFE0.
; 祭 ࠢ ⥫쭮  #20,  ᫨  ਡ   HL,
; ॠ쭮  ᤥ ⮦ ᠬ,  ᫨- ⭨ #20.

     LD DE,#FFE0

;६ WORMDIR 㪠뢠    ,     
;ࠢ  㤥   INC HL/DEC HL/ADD HL,BC/ADD HL,DE
; ᨬ  ࠭ ࠢ .

WORMDIR=$
     NOP

;⥯    ⭮  DE, ..    
; । 䠪 ᬥ   ࠧ ⥫⢠  
;ᥭ  ᫥ 祩  ᫨  릨.

     EX DE,HL

;ॢ   祭 ᥬ 뢠 -  ⮡  뫮 ॠ쭮,
;  ⮡  뫮     쥤 ஫
; ᬥ .

     LD B,7
     HALT
     DJNZ $-1

;塞 梥 ஫   (㥬 FLASH) XOR`.  ⮣ 
;६ 梥 ஫   HL, ..   ⭮ 뢠 .
; 梥 ஫   ॣ C  쭥 ஢ப

     LD HL,KROLCOL
     LD A,(HL)
     LD C,A
     XOR 9
     LD (HL),A

;   㤪  ⮡ 㧭,  ꥫ-  -
;(ᥡ ਬ:).  砫 㧭,  - ꥤ ஫.

     LD A,(DE)

; ஫  ?

     CP C
     JR NZ,CHKDEAD      ;த ...

;筮 ஫!
; ⮣ - 㤫   ᣥ஢  ஫.
;塞.    ⮭ -       ⮬,
;  砩 ᫨ ப -  讣 ⨪,  㦭 ।ᬮ
;砩    ⠫ ࠢ 255. ⮡  ⠫  ᫥ ।
;஫ -:) ⮬ ᫥ INC (HL) ஢塞 䫠
;९,  ᫨ 祣 - ⠭ -. - ᫨
;    255,   ⠪  ⠭.

     LD HL,WORMLEN
     INC (HL)
     JR NZ,$+3
     DEC (HL)

;த 㤫  - 㢥稬 㪠⥫     IX
;  (-   ).  ,    
;  (  ) -  ⮣ IX 㤥 㪠뢠
;   ,   । 祩 ,  ⮣  - 堭.

     INC IX
     INC IX

;  業  ஫:).

     CALL GENKROL

;᫥ GENKROL  ॣ A ᥣ  -    ᨬ   , 
;堢 ஫ - ⮡  ஢થ  ᬥ   ਭ ⠭
;஫  - 

     LD (DE),A

; ࠤ   ꥤ  ᥫ   ஬.

     LD A,4
     LD (BORDCOL), A

;   :) ..   㣨    ७ - 
;⠭ 뭮   ணࠬ.  ࠡ   祭
;ॣ A -   㦭 ࠭ 梥  (⮡    
; ).      ⠬ ᥩ  ...
; ॣ C   ⥫쭮  (譨 横).

     LD C,70
;⮡   -   祭 4-    #FE  0  1
     XOR 16
     OUT (#FE), A
;ᤥ প  ᬥ 祭 ,    ⥪饥
;祭 譥 横,  ⮡    ,   ᬥ .
     LD B,C
     DJNZ $
     DEC C
     JR NZ,$-8

; ⥯ ஢ਬ,  ᤮嫨-  砩 (ᨫ ᥡ/ࠩ ࠭).
;஢ 㤥 㤮 ᥣ    RRA ( ), 
;梥 ᥣ ᭮ - ⥭,  直 -    
;᫮. ⢥⢥,   ।⮢ ᫥ RRA ⠭ 䫠
;७. ᫨  ꥫ ஫ - 䫠  ⠭, ..   
;᫨  ॣ A ⭮ ᫮ ( 襭 訬 ⮬).

CHKDEAD

;嫨?..

     RRA
     JR NC,NODEAD       ;!:)..

;...  ...
; ⮬  㦭 뢥   㡮;).  祭
;।饩 , ⮫쪮 ⮡     ⮭,  㬭 - 
;㤥  祭 4-   ᨬ  ⮣,   
;ॣ R.   㤥     ॣ A 㤥ন ᫮
;2 -  .

     LD C,250
     LD A,R
     AND 18
     OR 2
     OUT (#FE), A
     LD B,C
     DJNZ $
     DEC C
     JR NZ,$-12

;...    祫⥩ ᪠  ...

     JP START

; ᫨   嫨  ⮣  -     
;    . 쪮    ᫥ 横 뢮
;㪠⥫   (,   IX - HL   ⨫)  2 
;祬  (INC'- 믮);  ᫨  㤫  ꥤ  -
;⮣ 祭 IX  ࠧ   ,  ࠧ 뢠 
;ᮦ 譨 . 饬, ᨬ DE   IX,     2 
;(㪠뢠  ⭮⥫ ᬥ饭).

NODEAD
     LD (IX-1),D
     LD (IX-2),E

;   ,   몠- ப   묨
;묨 ।⠬?.. ᮡ  ࠩ  67890 (Sinclair joy)?..

     LD BC,#EFFE

; HL 﫨  WORMDIR - ,  㤥 ஢ 
;ᨬ  몠 ப ( ⠢ ०, ᫨  ⠫
; 㭤).

     LD HL,WORMDIR
     IN A,(C)

;஢  鸞 67890 㤥    BT n,r    
;CP n -   ᯮᮡ    ,   㦭 ஢ 
;. ⮬ 룮 ᯮ짮 ⮢  RRA (஢
;ਤ  浪 ᫥ ⮢ ,   ࠧ  ய -
; 0,     ᯮ).

     RRA
     RRA
     JR C,$+4
;   (9) - ᨬ  WORMDIR  樨 ADD HL,DE
     LD (HL),#19
     RRA
     JR C,$+4
;   (8) - ᨬ  WORMDIR  樨 ADD HL,BC
     LD (HL),#09
     RRA
     JR C,$+4
;  ࠢ (7) - ᨬ  WORMDIR  樨 INC HL
     LD (HL),#23
     RRA
     JR C,$+4
;   (6) - ᨬ  WORMDIR  樨 DEC HL
     LD (HL),#2B

;᫥ ஢ਬ,  - ப BREAK (뢠  ⠪ 祭:).
;஢塞   ⭮ ணࠬ ROM BASIC48. ᫨   -
;室  横, ᫨ ...
     CALL #1F54
     JP C,MAINLOOP

;... ࠧ , ⠪  ᢨ...
     RET


; - ணࠬ 樨 ᮢ ஫, ᠬ   
;KROLADR, ᠬ ஢ - - 祣 襣 ⠬  ஫ ᮡࠫ
;, . RND ᯮ짮 祭 ७,   ॣ R,
;     ࠢ (㣨 ᯮᮡ ᮦ  ).
; 樨   㦭 । ⠪ 祭  ( ).

GENKROL

;砫 ᣥਬ 訩   -     । #58..#5A.
;⮣  , ᣥ஢ ᫮ 0..2 (AND`,  ᫨ 諮 3 - 
;஢ ). ⮬ 塞  ⮬  #58,  砥
;訩  .

     LD A,R
     LD H,3
     AND H
     CP H
     JR Z,GENKROL
     ADD A,#58
     LD H,A

; 㥬 訩  ,  祭    ।
;#00..#FF, ⠪   ⥫ 饭  .
     LD A,R
     LD L,A

;஢塞,   ਡ 室  ᣥ஢ ,  ᫨ 
;  ࠩ  - 㥬  .

     LD A,(HL)
     CP 0
     JR NZ,GENKROL

;ᨬ ᣥ஢   ६ KROLADR.

     LD (KROLADR), HL

;  ,  室  ⮩ ணࠬ ॣ A ᥣ ࠢ
; -  ᢮⢮ ணࠬ ᯮ짮 .

     RET

;  .

