+;100% = bugs fixed + levels done
+
+;-----------------------------
+;-----------------------------
+;--------- W O R M ---------
+;-----------------------------
+;-----------------------------
+
+#define cal call
+#define psh push
+#define dnz djnz
+
+#include "asm86.h"
+#include "ti86asm.inc"
+
+_SHRACC = $4383
+_SHLACC = $438B
+_divHLby10 = $4044 ;hl=hl/10
+_divAby10 = $4DAF ;a=a/10
+_HLTIMES10 = $41BF ;hl=hl*10
+_cphlde = $403C
+_clrWindow = $4A86 ;clear screen
+_asapvar = $D6FC ;own name (worm)
+_MOV4B = $429B ;4x ld (de),(hl)
+_MOV5B = $4297 ;5x ld (de),(hl)
+_mov9b = $4283 ;9x ld (de),(hl)
+_ldHLind = $4010 ;ld hl,(hl)
+_swapt_ = $45F3 ;ex_ahl_bde
+_Get_Word_ahl = $521D ;ld de,(ahl)
+_Set_Word_ahl = $5221 ;ld (ahl),de
+_INC_PTR_AHL = $4637 ;ahl=ahl+1
+_AHL_PLUS_2_PG3 = $4C3F ;ahl=ahl+2
+_SET_ABS_SRC_ADDR = $4647 ;set source for mm.ldir =ahl
+_LOAD_ABS_SRC_ADDR = $5209 ;ahl = mm.ldir source
+_SET_ABS_DEST_ADDR = $5285 ;set destination for mm.ldir = ahl
+_SET_MM_NUM_BYTES = $464F ;number of bytes for mm.ldir = ahl
+_mm_ldir = $52ED ;24bit ldir
+_RAM_PAGE_1 = $47E3 ;set $8000+ to page 1
+_RAM_PAGE_7 = $47F3
+_PTEMP_END = $D29A
+_load_ram_ahl = $462F ;ahl->page+hl
+_writeb_inc_ahl = $5567 ;ld (ahl),c
+
+;-----------------------------
+;------- data storage -------
+;-----------------------------
+
+leveldata = $EA00 ;size< $400
+ScrBuffer = $8100 ;size=$2000 (32x256)
+ ;->mod$800
+templevels = $BC00 ;size= 3*$10
+DispBuffer = $BC00 ;size= $390 (16x57)
+SinCosTable = $B500 ;size= $100 (4x64)
+
+worm1 = $B400
+worm2 = $B41E
+worm3 = $B43C
+worm4 = $B45A
+ball1 = $B478
+
+resbit = 2 ;and%11111011
+worm1p = $B000 ;%10110000 -$B3FF
+worm2p = $B800 ;%10111000 -$BBFF
+worm3p = $F000 ;%11110000 -$F3FF
+worm4p = $A800 ;$E800=%11101000 ;$D748+$1000+
+
+WormVersion = 088