home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 82 / asm / source / crash / lmine.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  12.2 KB  |  802 lines

  1. .INCLUDE "CRASH82.INC"
  2. .DB "LandMine 1.0",0
  3.  
  4.  
  5. ;---------- Varibles - in apd ram ----------
  6. ufield =    APD_BUF    ; holds mines for field generation and holds
  7.                 ; the status of each block for game [96 bytes]
  8. field    =    APD_BUF+97    ; holds mines and numbers for game and generation [128 bytes]
  9. lft =        TEXT_MEM    ; holds the number of spaces left to be cleared
  10. lev =        TEXT_MEM+1
  11. xc =        TEXT_MEM+2    ; x coordinate
  12. yc =        TEXT_MEM+4    ; y coordinate
  13. tmp =        TEXT_MEM+6  ; holds a 9 if game over and other stuff for generation
  14. time =    TEXT_MEM+10 ; holds the time left
  15. tv =        TEXT_MEM+11 ; holds the count for time and other stuff for
  16.                 ; generation - 2 bytes
  17. blank    =    TEXT_MEM+13 ; 15 spaces 0 terminated - 16 bytes
  18. string =    TEXT_MEM+30
  19.  
  20.  
  21. ;---------- set up the game - high score etc ----------
  22.     ROM_CALL(CLEARLCD)
  23.     ld        hl,514
  24.     ld        (CURSOR_POS),hl
  25.     ld        hl,lmine
  26.     ROM_CALL(D_LT_STR)
  27.     ld        hl,1283
  28.     ld        (CURSOR_POS),hl
  29.     ld        hl,abt1
  30.     ROM_CALL(D_LT_STR)
  31.     ld        hl,516
  32.     ld        (CURSOR_POS),hl
  33.     ld        hl,abt2
  34.     ROM_CALL(D_LT_STR)
  35.     ld        hl,40*256+0
  36.     ld        (CURSOR_X),hl
  37.     ld        hl,port
  38.     ROM_CALL(D_ZM_STR)
  39.     ld        b,15
  40.     ld        a,' '
  41.     ld        hl,blank
  42.  
  43. lspl:    ld        (hl),a
  44.     inc        hl
  45.     djnz        lspl
  46.     ld        a,0
  47.     ld        (hl),a
  48.  
  49.     ld        a,92
  50.     ld        (lev),a
  51.     call        wkey
  52.     call        BUFCLR
  53.     ROM_CALL(CLEARLCD)
  54.  
  55. ;---------- set up the level -----------
  56. start:
  57.     set         7,(iy+$14)        ;was +20
  58.     ld        a,181
  59.     ld        (time),a
  60.     ld        b,192
  61.     ld        a,0
  62.     ld        hl,ufield
  63. intlp:    ld        (hl),a
  64.     inc        hl
  65.     djnz        intlp
  66.  
  67. ;---------- Calculate and display the number of mines ----------
  68.     ld        hl,0
  69.     ld        (tmp),hl
  70.     ld        a,(lev)
  71.     ld        (lft),a
  72.     ld        b,a
  73.     ld        a,96
  74.     sub        b
  75.     ld        (tmp),a
  76.     ld        hl,7*256+0
  77.     ld        (CURSOR_X),hl
  78.     ld        hl,msg1
  79.     ROM_CALL(D_ZM_STR)
  80.     ld        hl,(tmp)
  81.     call        DispHL
  82.     call        CR_GRBCopy
  83.     call        wkey
  84.     ld        a,(tmp)
  85.     ld        b,a
  86.  
  87. ;---------- Randomly put mines on the field ----------
  88. ; This takes awhile (the pause for displaying the score and mines).
  89.     ld        de,field
  90. ranlp:    push        bc
  91. ranlp2:
  92.     call        random    
  93. ;    ld        a,96
  94. ;    call        setxxop2
  95. ;    call        fpmult
  96. ;    call        convop1
  97.     
  98.     ld        hl,field
  99.     add        hl,de
  100.     ld        a,(hl)
  101.     cp        9
  102.     jr        z,ranlp2
  103.     ld        a,9
  104.     ld        (hl),a
  105.     pop        bc
  106.     djnz        ranlp
  107.  
  108. ;---------- Save the locations of the mines ----------
  109. ; This prevents the next routine from destroying where
  110. ; the mines are by saving them in ufield.
  111.     ld        hl,field
  112.     ld        de,ufield
  113.     ld        bc,96
  114.     ldir        ; copy (hl) to (de), inc de, inc hl, dec bc until bc=0
  115.  
  116. ;---------- Fill in the numbers on the field ----------
  117. ; Fill field with numbers indicating how many mines
  118. ; surround it.
  119.     ld        c,0
  120.     ld        hl,field
  121.     ld        de,ufield
  122. lp3:    ld        b,9
  123.     ld        a,11
  124. sl1:    cp        c
  125.     jr        z,sk1
  126.     add        a,12
  127.     djnz        sl1
  128.     ld        a,(de)
  129.     cp        9
  130.     jr        nz,sk1
  131.     inc        hl
  132.     call        inchl
  133.     dec        hl
  134. sk1:    ld        b,9
  135.     ld        a,0
  136. sl2:    cp        c
  137.     jr        z,sk2
  138.     add        a,12
  139.     djnz        sl2
  140.     ld        a,(de)
  141.     cp        9
  142.     jr        nz,sk2
  143.     dec        hl
  144.     call        inchl
  145.     inc        hl
  146. sk2:    ld        b,12
  147.     ld        a,0
  148. sl3:    cp        c
  149.     jr        z,sk3
  150.     inc        a
  151.     djnz        sl3
  152.     ld        a,(de)
  153.     cp        9
  154.     jr        nz,sk3
  155.     push        hl
  156.     ld        b,12
  157. ssl3:    dec        hl
  158.     djnz        ssl3
  159.     call        inchl
  160.     pop        hl
  161. sk3:    ld        b,12
  162.     ld        a,96
  163. sl4:    cp        c
  164.     jr        z,sk4
  165.     dec        a
  166.     djnz        sl4
  167.     ld        a,(de)
  168.     cp        9
  169.     jr        nz,sk4
  170.     push        hl
  171.     ld        b,12
  172. ssl4:    inc        hl
  173.     djnz        ssl4
  174.     call        inchl
  175.     pop        hl
  176. sk4:    ld        b,12
  177.     ld        a,0
  178. sl5a:    cp        c
  179.     jr        z,sk5
  180.     inc        a
  181.     djnz        sl5a
  182.     ld        b,12
  183.     ld        a,0
  184. sl5b:    cp        c
  185.     jr        z,sk5
  186.     add        a,12
  187.     djnz        sl5b
  188.     ld        a,(de)
  189.     cp        9
  190.     jr        nz,sk5
  191.     push        hl
  192.     ld        b,13
  193. ssl5:    dec        hl
  194.     djnz        ssl5
  195.     call        inchl
  196.     pop        hl
  197. sk5:    ld        b,12
  198.     ld        a,0
  199. sl6a:    cp        c
  200.     jr        z,sk6
  201.     inc        a
  202.     djnz        sl6a
  203.     ld        b,12
  204.     ld        a,11
  205. sl6b:    cp        c
  206.     jr        z,sk6
  207.     add        a,12
  208.     djnz        sl6b
  209.     ld        a,(de)
  210.     cp        9
  211.     jr        nz,sk6
  212.     push        hl
  213.     ld        b,11
  214. ssl6:    dec        hl
  215.     djnz        ssl6
  216.     call        inchl
  217.     pop        hl
  218. sk6:    ld        b,12
  219.     ld        a,96
  220. sl7a:    cp        c
  221.     jr        z,sk7
  222.     dec        a
  223.     djnz        sl7a
  224.     ld        b,12
  225.     ld        a,0
  226. sl7b:    cp        c
  227.     jr        z,sk7
  228.     add        a,12
  229.     djnz        sl7b
  230.     ld        a,(de)
  231.     cp        9
  232.     jr        nz,sk7
  233.     push        hl
  234.     ld        b,11
  235. ssl7:    inc        hl
  236.     djnz        ssl7
  237.     call        inchl
  238.     pop        hl
  239. sk7:    ld        b,12
  240.     ld        a,96
  241. sl8a:    cp        c
  242.     jr        z,sk8
  243.     dec        a
  244.     djnz        sl8a
  245.     ld        b,12
  246.     ld        a,11
  247. sl8b:    cp        c
  248.     jr        z,sk8
  249.     add        a,12
  250.     djnz        sl8b
  251.     ld        a,(de)
  252.     cp        9
  253.     jr        nz,sk8
  254.     push        hl
  255.     ld        b,13
  256. ssl8:    inc        hl
  257.     djnz        ssl8
  258.     call        inchl
  259.     pop        hl
  260. sk8:    inc        hl
  261.     inc        de
  262.     inc        c
  263.     ld        a,c
  264.     cp        96
  265.     jp        nz,lp3    
  266.  
  267. ;---------- Reset the mines on the field ----------
  268.     ld        b,96
  269.     ld        hl,ufield
  270.     ld        de,field
  271. lp2:    ld        a,(hl)
  272.     cp        9
  273.     jr        nz,sk9
  274.     ld        (de),a
  275. sk9:    ld        a,0
  276.     ld        (hl),a
  277.     inc        hl
  278.     inc        de
  279.     djnz        lp2
  280.  
  281. ;---------- Set up the screen ----------
  282.     ld        a,0
  283.     ld        (yc),a
  284.     ld        (xc),a
  285.     ld        b,12
  286. tdrw:    push        bc
  287.     ld        de,top
  288.     call        sprite
  289.     ld        a,(xc)
  290.     inc        a
  291.     ld        (xc),a
  292.     pop        bc
  293.     djnz        tdrw
  294.     ld        a,1
  295.     ld        (yc),a
  296.     dec        a
  297.     ld        (xc),a
  298.     ld        b,96
  299. dlp:    ld        de,block
  300.     call        sprite
  301.     ld        a,(xc)
  302.     inc        a
  303.     cp        12
  304.     jr        nz,dcn
  305.     ld        a,(yc)
  306.     inc        a
  307.     ld        (yc),a
  308.     ld        a,0
  309. dcn:    ld        (xc),a
  310.     djnz        dlp
  311.     ld        a,0
  312.     ld        (xc),a
  313.     inc        a
  314.     ld        (yc),a
  315.     call        dispp
  316.     ROM_CALL(CLEARLCD)
  317.  
  318. ;---------- Main program loop ----------
  319. main:    call        CR_GRBCopy
  320. keylp:call        delay
  321.     ld        a,(tv)
  322.     dec        a
  323.     jp        z,sbtime
  324.     ld        (tv),a
  325.     call        GET_KEY
  326.     cp        G_RIGHT
  327.     jp        z,mright
  328.     cp        G_LEFT
  329.     jp        z,mleft
  330.     cp         G_UP
  331.     jp        z,mup
  332.     cp        G_DOWN
  333.     jp        z,mdown
  334.     cp        G_2ND
  335.     jp        z,munc
  336.     cp        G_ALPHA
  337.     jp        z,markit
  338.     cp        G_DEL
  339.     jp        z,pause
  340.     cp        G_CLEAR
  341.     jr        z,gmovr
  342.     jr        keylp
  343. gmovr:    ; Game Over - Show all mines
  344.     ld        a,(xc)
  345.     ld        b,a
  346.     ld        a,(yc)
  347.     ld        c,a
  348.     push        bc
  349.     ld        a,0
  350.     ld        (xc),a
  351.     inc        a
  352.     ld        (yc),a
  353.     ld        hl,field
  354.     ld        b,96
  355. golp:    ld        a,(hl)
  356.     cp        9
  357.     jr        nz,gonx
  358.     ld        de,mine
  359.     push        hl
  360.     call        sprite
  361.     pop        hl
  362. gonx:    ld        a,(xc)
  363.     inc        a
  364.     cp        12
  365.     jr        nz,gosk
  366.     ld        a,(yc)
  367.     inc        a
  368.     ld        (yc),a
  369.     ld        a,0
  370. gosk:    ld        (xc),a
  371.     inc        hl
  372.     djnz        golp
  373.     pop        bc
  374.     ld        a,b
  375.     ld        (xc),a
  376.     ld        a,c
  377.     ld        (yc),a
  378.     call        dispp
  379.     call        CR_GRBCopy 
  380.     call        wkey
  381.     ROM_CALL(CLEARLCD)
  382.     ld        hl,10*256+26
  383.     ld        (CURSOR_POS),hl
  384.     ld        hl,lost
  385.     call CR_GRBCopy
  386. exit:    ROM_CALL(D_ZM_STR)
  387.  
  388. ;---------- Check High Score ----------
  389.     call        wkey
  390.     call        BUFCLR
  391.     ROM_CALL(CLEARLCD)
  392.     res         7,(iy+14)        ;was 20
  393.     ret        ; Exit Land Mine
  394.  
  395. winner:    ROM_CALL(CLEARLCD)
  396.     ld        a,(time)
  397.     ld        a,(lev)
  398.     sub        4
  399.     ld        (lev),a
  400.     cp        24
  401.     jp        nz,start
  402.     ld        hl,1026
  403.     ld        (CURSOR_POS),hl
  404.     ld        hl,won
  405.     ROM_CALL(D_LT_STR)
  406.     jr        exit
  407.  
  408. ;---------- Pause ----------
  409. pause:    ROM_CALL(CLEARLCD)
  410.     ld        hl,771
  411.     ld        (CURSOR_POS),hl
  412.     ld        hl,ps
  413.     ROM_CALL(D_LT_STR)
  414.     call        wkey
  415.     cp    G_DEL
  416.     jp        z,gmovr
  417.     ROM_CALL(CLEARLCD)
  418.     jp        main
  419.     
  420. ;---------- Subtract from time left ----------
  421. sbtime:
  422.     ld        a,255
  423.     ld        (tv),a
  424.     ld        a,(time)
  425.     dec        a
  426.     jp        z,gmovr
  427.     ld        (time),a
  428.     ld        hl,0*256+40
  429.     ld        (CURSOR_X),hl
  430.     ld        hl,blank
  431.     ROM_CALL(D_ZM_STR)
  432.     ld        hl,0*256+42
  433.     ld        (CURSOR_X),hl
  434.     ld        a,(time)
  435.     call DispA
  436.     jp        main
  437.  
  438.  
  439. ;---------- Mark/Unmark a mine ----------
  440. markit:    call        align
  441.     ld        bc,ufield
  442.     add        hl,bc
  443.     ld        a,(hl)
  444.     cp        1
  445.     jr        z,skmark
  446.     cp        2
  447.     jr        z,rmark
  448.     ld        a,2
  449.     ld        (hl),a
  450.     ld        de,mark
  451.     jr        markd
  452. rmark:    ld        a,0
  453.     ld        (hl),a
  454.     ld        de,block
  455. markd:    call        sprite
  456.     call        dispp
  457. skmark:    jp        main
  458.  
  459. ;---------- Move right ----------
  460. mright:    ld        a,(xc)
  461.     cp        11
  462.     jr        z,xmr
  463.     call        setblk
  464.     ld        a,(xc)
  465.     inc        a
  466.     ld        (xc),a
  467.     call        dispp
  468. xmr:    jp        main
  469.  
  470. ;---------- Move left ----------
  471. mleft:    ld        a,(xc)
  472.     cp        0
  473.     jr        z,xml
  474.     call        setblk
  475.     ld        a,(xc)
  476.     dec        a
  477.     ld        (xc),a
  478.     call        dispp
  479. xml:    jp        main
  480.  
  481. ;---------- Move up -----------
  482. mup:    ld        a,(yc)
  483.     cp        1
  484.     jr        z,xmu
  485.     call        setblk
  486.     ld        a,(yc)
  487.     dec        a
  488.     ld        (yc),a
  489.     call        dispp
  490. xmu:    jp        main
  491.  
  492. ;---------- Move down ----------
  493. mdown:    ld        a,(yc)
  494.     cp        8
  495.     jr        z,xmd
  496.     call        setblk
  497.     ld        a,(yc)
  498.     inc        a
  499.     ld        (yc),a
  500.     call        dispp
  501. xmd:    jp        main
  502.  
  503. ;---------- Uncover a space ----------
  504. munc:    call        align
  505.     ld        bc,ufield
  506.     add        hl,bc
  507.     ld        a,(hl)
  508.     cp        2
  509.     jr        z,smuc
  510.     cp        0
  511.     jr        nz,mcn
  512.     ld        a,(lft)
  513.     dec        a
  514.     ld        (lft),a
  515. mcn:    ld        a,1
  516.     ld        (hl),a
  517.     call        setblk
  518.     call        dispp
  519.     ld        a,(tmp)
  520.     cp        9
  521.     jp        z,gmovr
  522.     ld        a,(lft)
  523.     cp        0
  524.     jp        z,winner
  525. smuc:    jp        main
  526.     
  527. ;--------- Set/Reset block ----------
  528. setblk:    call        align
  529.     push        hl
  530.     ld        bc,ufield
  531.     add        hl,bc
  532.     ld        a,(hl)
  533.     pop        hl
  534.     cp        0
  535.     jr        z,sbsk2
  536.     cp        1
  537.     jr        z,skmrk
  538.     ld        de,mark
  539.     jr        ok
  540. skmrk:    ld        bc,field
  541.     add        hl,bc
  542.     ld        a,(hl)
  543.     cp        9
  544.     jr        nz,not9
  545.     ld        (tmp),a
  546. not9:    ld        hl,nada
  547.     cp        0
  548.     jr        z,sbdn
  549.     ld        b,a
  550.     ld        de,6
  551. sblp:    add        hl,de
  552.     djnz        sblp
  553. sbdn:    ex        de,hl
  554. ok:    call        sprite
  555.     jr        sbx
  556. sbsk2:    ld        de,block
  557.     call        sprite
  558. sbx:    ret
  559.  
  560. ;---------- inc the value at (hl) ----------
  561. inchl:    ld        a,(hl)
  562.     inc        a
  563.     ld        (hl),a
  564.     ret
  565.  
  566. ;----------- Point de to xc,yc ----------
  567. ; This allows a list to be read as a matrix
  568. align:    ld        hl,(xc)
  569.     ld        a,(yc)
  570.     dec        a
  571.     jr        z,askp
  572.     ld        b,a
  573. alp:    ld        de,12    ; width of matrix
  574.     add        hl,de
  575.     djnz        alp
  576. askp:    ret
  577.  
  578. ;---------- Wait for a key press ----------
  579. ;GetKey can not be used because it would really mess up the
  580. ;calc if it powered down!
  581. wkey:
  582.     call        GET_KEY
  583.     or a
  584.     jr        z,wkey
  585.     ret
  586.  
  587.  
  588. ;---------- Write a sprite (8*7) -----------
  589. sprite:    push        bc
  590.     ld        hl,(xc)
  591.     ld        a,(yc)
  592.     cp        0
  593.     jr        z,sxys
  594.     ld        b,a
  595. sxyl:    push        bc
  596.     ld        bc,84
  597.     add        hl,bc
  598.     pop        bc
  599.     djnz        sxyl
  600. sxys:    ld        bc,GRAPH_MEM
  601.     add        hl,bc
  602.     ld        b,7
  603. slpb:    ld        a,(de)
  604.     ld        (hl),a
  605.     inc        de
  606.     push        bc
  607.     ld        bc,12
  608.     add        hl,bc
  609.     pop        bc
  610.     djnz        slpb
  611.     pop        bc
  612.     ret
  613.  
  614. ;---------- Show current location (box) ----------
  615. dispp:    push        bc
  616.     ld        de,player
  617.     ld        hl,(xc)
  618.     ld        a,(yc)
  619.     cp        0
  620.     jr        z,sxys2
  621.     ld        b,a
  622. sxyl2:    push        bc
  623.     ld        bc,84
  624.     add        hl,bc
  625.     pop        bc
  626.     djnz        sxyl2
  627. sxys2:    ld        bc,GRAPH_MEM
  628.     add        hl,bc
  629.     ld        b,7
  630. slpb2:    ld        a,(de)
  631.     or        (hl)
  632.     ld        (hl),a
  633.     inc        de
  634.     push        bc
  635.     ld        bc,12
  636.     add        hl,bc
  637.     pop        bc
  638.     djnz        slpb2
  639.     pop        bc
  640.     ret
  641.  
  642. DispA:
  643.        ld h,0
  644.       ld l,a
  645. DispHL:
  646.         push de
  647.         push hl
  648.         ld de,string+5
  649.         xor a
  650.         ld (de),a
  651. Repeat:
  652.         call UNPACK_HL
  653.         add a,'0'
  654.         dec de
  655.         ld (de),a
  656.         ld a,h
  657.         or l
  658.         jr nz,Repeat
  659.         ex de,hl
  660.         ROM_CALL(D_ZM_STR)
  661.         pop hl
  662.         pop de
  663.         ret
  664.  
  665. BUFCLR:
  666.         ld hl,$88B8
  667.         ld de,$88B9
  668.         ld bc,$2FF
  669.         ld (hl),0
  670.         ldir
  671.         ret
  672.  
  673. random:                ;by: Jimmy Mardell
  674.    ld a,96
  675.    ld b,a
  676.    ld a,r
  677.    add a,a
  678.    ld hl,0
  679.    ld d,0
  680.    ld e,a
  681. RMul:
  682.    add hl,de
  683.    djnz RMul
  684.    ld a,h
  685.    ld e,a
  686.    ret
  687.  
  688. delay:
  689.     ld b,255
  690.  
  691. delayloop:
  692.     nop
  693.     nop
  694.     nop
  695.     djnz delayloop            
  696.     ret
  697. ;---------- Messages -----------
  698. lmine:.db        13,"LandMine v1.0"
  699. abt1:    .db        6,"by Joe"
  700. abt2:    .db        13,"Wingbermuehle"
  701. port:    .db        "           Port- Ahmed El-Helw",0
  702. lost:    .db        "You Lost"
  703. won:    .db        "You Won!"
  704. msg1:    .db        "Mines:",0
  705. ps:    .db        10,"- Paused -"
  706.  
  707. ;---------- Sprite data ----------
  708. top:    .db        01100110b    ; top border
  709.     .db        10011001b
  710.     .db        01100110b
  711.     .db        10011001b
  712.     .db        01100110b
  713.     .db        10011001b
  714. ;    .db        11111111b
  715. player:    .db        11111111b    ; box
  716.     .db        10000001b
  717.     .db        10000001b
  718.     .db        10000001b
  719.     .db        10000001b
  720.     .db        10000001b
  721.     .db        11111111b
  722. block:    .db        00000000b    ; block
  723.     .db        01010100b
  724.     .db        00101010b
  725.     .db        01010100b
  726.     .db        00101010b
  727.     .db        01010100b
  728. ;    .db        00000000b
  729. nada:    .db        0,0,0,0,0,0    ; 0 - blank
  730. num1:    .db        00000000b    ; 1
  731.     .db        00011000b
  732.     .db        00001000b
  733.     .db        00001000b
  734.     .db        00001000b
  735.     .db        00011100b
  736. ;    .db        00000000b
  737. num2:    .db        00000000b    ; 2
  738.     .db        00111100b
  739.     .db        00000100b
  740.     .db        00111100b
  741.     .db        00100000b
  742.     .db        00111100b
  743. ;    .db        00000000b
  744. num3:    .db        00000000b    ; 3
  745.     .db        00111100b
  746.     .db        00000100b
  747.     .db        00111100b
  748.     .db        00000100b
  749.     .db        00111100b
  750. ;    .db        00000000b
  751. num4:    .db        00000000b    ; 4
  752.     .db        00100100b
  753.     .db        00100100b
  754.     .db        00111100b
  755.     .db        00000100b
  756.     .db        00000100b
  757. ;    .db        00000000b
  758. num5:    .db        00000000b    ; 5
  759.     .db        00111100b
  760.     .db        00100000b
  761.     .db        00111100b
  762.     .db        00000100b
  763.     .db        00111100b
  764. ;    .db        00000000b
  765. num6:    .db        00000000b    ; 6
  766.     .db        00111100b
  767.     .db        00100000b
  768.     .db        00111100b
  769.     .db        00100100b
  770.     .db        00111100b
  771. ;    .db        00000000b
  772. num7:    .db        00000000b    ; 7
  773.     .db        00111100b
  774.     .db        00000100b
  775.     .db        00000100b
  776.     .db        00000100b
  777.     .db        00000100b
  778. ;    .db        00000000b
  779. num8:    .db        00000000b    ; 8
  780.     .db        00111100b
  781.     .db        00100100b
  782.     .db        00111100b
  783.     .db        00100100b
  784.     .db        00111100b
  785. ;    .db        00000000b
  786. mine:    .db        00000000b    ; mine
  787.     .db        01010100b
  788.     .db        00111000b
  789.     .db        01111100b
  790.     .db        00111000b
  791.     .db        01010100b
  792. ;    .db        00000000b
  793. mark:    .db        00000000b    ; flag
  794.     .db        00000000b
  795.     .db        00111100b
  796.     .db        00111100b
  797.     .db        00100000b
  798.     .db        00100000b
  799.     .db        00000000b
  800.  
  801. .end
  802. END