home *** CD-ROM | disk | FTP | other *** search
/ ticalc.org / ticalc_org_rev_b.iso / archives / 85 / asm / source / zshell / bandit.asm < prev    next >
Encoding:
Assembly Source File  |  2001-07-01  |  16.0 KB  |  456 lines

  1. ;Slot Machine 1.0 (c) by Philip Graf 27.9.98
  2.  
  3. #include "TI-85.H"
  4.  
  5. MONEY    =TEXT_MEM
  6. TEMP    =TEXT_MEM+2
  7. BET    =TEXT_MEM+4
  8. RANDOM    =TEXT_MEM+6
  9. RANDLOC    =TEXT_MEM+7
  10. ICONS    =TEXT_MEM+8
  11. ILOC    =TEXT_MEM+11
  12. ;    =TEXT_MEM+13
  13.  
  14. .org 0
  15. title:  .db "Slot Machine v1.0",0
  16.  
  17.     ld hl,ZS_BITS                ;new checksum after exit program
  18.     set 0,(hl)
  19.     ld hl,(PROGRAM_ADDR)            ;init random number generator
  20.     ld de,rseed
  21.     add hl,de
  22.     ld a,(hl)
  23.     ld (RANDLOC),a
  24.     ld hl,(PROGRAM_ADDR)            ;money=saved money
  25.     ld de,msav
  26.     add hl,de
  27.     call LD_HL_MHL
  28.     ld (MONEY),hl
  29.     ld hl,(PROGRAM_ADDR)            ;bet=saved bet
  30.     ld de,bsav
  31.     add hl,de
  32.     call LD_HL_MHL
  33.     ld (BET),hl
  34.     ROM_CALL(CLEARLCD)
  35.     ld hl,$0048                ;write title
  36.     ld de,copystr
  37.     CALL_(writexymnu)
  38.     ld hl,$0000
  39.     ld de,title
  40.     CALL_(writexymnu)
  41.     ld hl,$FC70                ;draw line
  42.     ld a,$FF
  43.     CALL_(horizline)
  44.     ld hl,(PROGRAM_ADDR)            ;draw background
  45.     ld de,backpic
  46.     add hl,de
  47.     ld bc,768
  48.     ld de,$fc80
  49.     ldir
  50. showmoney:
  51.     ld hl,$0107                ;write money at (1,7)
  52.     ld ($800c),hl
  53.     ld hl,(MONEY)
  54.     ROM_CALL(D_HL_DECI)
  55.     ld a,'$'                ;write "$" after money
  56.     ROM_CALL(TX_CHARPUT)
  57.     ld hl,$0a07                ;write betstr at (10,7)
  58.     ld de,betstr
  59.     CALL_(writexy)
  60.     ld hl,$1307                
  61.     ld ($800c),hl
  62.     ld a,'$'
  63.     ROM_CALL(TX_CHARPUT)            ;write "$" after bet
  64. showbet:
  65.     ld hl,$0e07
  66.     ld ($800c),hl
  67.     ld hl,(BET)                ;write bet at (14,7)
  68.     ROM_CALL(D_HL_DECI)
  69. keyloop:
  70.     call GET_KEY
  71.     cp K_EXIT
  72.     jr z,exit
  73.     cp K_2ND
  74.     jr z,doit
  75.     cp K_UP
  76.     jr z,kup
  77.     cp K_DOWN
  78.     jr z,kdown
  79.     jr keyloop
  80.  
  81. kup:    ld hl,(MONEY)
  82.     ex de,hl
  83.     ld hl,(BET)
  84.     call CP_HL_DE            ;compare bet with money
  85.     jr z,keyloop            ;don't increase if equal
  86.     inc hl
  87.     ld (BET),hl
  88.     jr showbet
  89. kdown:    ld hl,(BET)
  90.     dec hl
  91.     ld a,l
  92.     or h
  93.     jr z,keyloop            ;don't decrease if bet is already 1$
  94.     ld (BET),hl
  95.     jr showbet
  96.  
  97. exit:    ld a,(RANDLOC)            ;exit procedure
  98.     ld hl,(PROGRAM_ADDR)        ;save random number
  99.     push hl
  100.     ld de,rseed
  101.     add hl,de
  102.     ld (hl),a
  103.     pop hl
  104.     push hl                ;save money
  105.     ld de,msav
  106.     add hl,de
  107.     ld de,(MONEY)
  108.     ld (hl),e
  109.     inc hl
  110.     ld (hl),d
  111.     pop hl                ;save bet
  112.     ld de,bsav
  113.     add hl,de
  114.     ld de,(BET)
  115.     ld (hl),e
  116.     inc hl
  117.     ld (hl),d
  118.     ret                ;exit
  119.  
  120. doit:    ld b,3                ;repeat for all 3 icons
  121.     ld hl,$fda4            ;screenaddress for the 1st icon
  122.     ld (TEMP),hl
  123.     ld hl,ICONS            ;init ILOC
  124.     ld (ILOC),hl
  125. d3:    push bc
  126.     CALL_(rand)            ;randomize
  127.     ld hl,(ILOC)
  128.     ld (hl),a
  129.     ld hl,pic1            ;memaddress for the 1st picture
  130.     or a
  131.     jr z,d1                ;calculate memaddress for picture
  132.     ld de,32
  133.     ld b,a
  134. d2:    add hl,de
  135.     djnz d2
  136. d1:    ex de,hl            ;draw it
  137.     ld hl,(TEMP)
  138.     push hl
  139.     CALL_(drawpic)
  140.     pop hl
  141.     inc l                ;screenaddress for next icon
  142.     inc l
  143.     inc l
  144.     ld (TEMP),hl
  145.     ld hl,ILOC            ;update ILOC for next icon
  146.     inc (hl)
  147.     pop bc
  148.     djnz d3
  149.     ld hl,TEMP            ;calculate profit/loss
  150.     ld (hl),0            ;winfactor=0
  151.     ld a,(ICONS)
  152.     ld b,a
  153.     ld a,(ICONS+1)
  154.     cp b                ;compare ICON 0 with 1
  155.     jr nz,d4
  156.     inc (hl)
  157. d4:    ld a,(ICONS+2)
  158.     cp b                ;compare ICON 0 with 2
  159.     jr nz,d5
  160.     inc (hl)
  161. d5:    ld b,a
  162.     ld a,(ICONS+1)
  163.     cp b                ;compare ICON 2 with 1
  164.     jr nz,d6
  165.     inc (hl)
  166. d6:    ld b,(hl)
  167.     ld a,b                ;if winfactor=0 then subtract bet
  168.     or a
  169.     jr z,d8
  170.     ld de,(BET)            ;else add bet*winfactor
  171.     ld hl,(MONEY)
  172. d7:    add hl,de
  173.     djnz d7
  174.     ld (MONEY),hl
  175.     JUMP_(showmoney)
  176. d8:    ld hl,(BET)            ;subtract bet
  177.     ld de,(MONEY)
  178.     ld a,d
  179.     sub h
  180.     ld (TEMP+1),a
  181.     ld a,e
  182.     sub l
  183.     ld (TEMP),a
  184.     ld a,e
  185.     cp l
  186.     jr nc,d9
  187.     ld hl,TEMP+1
  188.     dec (hl)
  189. d9:    ld hl,(TEMP)
  190.     ld (MONEY),hl
  191.     ld a,h                ;check if money=0
  192.     or l
  193.     jr z,gameover            ;game over if so
  194.     ld de,(BET)            ;adjust bet if necessary
  195.     call CP_HL_DE    
  196.     jr nc,d10            ;bet must not be greater than money
  197.     ld (BET),hl    
  198. d10:    JUMP_(showmoney)
  199.  
  200. gameover:
  201.     ld hl,$0107            ;write gostr at (1,7)
  202.     ld ($800c),hl
  203.     ld de,gostr
  204.     CALL_(writexy)
  205.     ld hl,100
  206.     ld (MONEY),hl
  207.     ld hl,10
  208.     ld (BET),hl
  209. g1:    call GET_KEY            ;wait for EXIT-key being pressed
  210.     cp K_EXIT
  211.     jr nz,g1
  212.     JUMP_(exit)
  213.  
  214. gostr:    .db "---= GAME OVER =---",0
  215.  
  216. writexy:                                ;write text in normal style
  217.     ld ($800C),hl
  218.     ld hl,(PROGRAM_ADDR)
  219.     add hl,de
  220.     ROM_CALL(D_ZT_STR)
  221.     ret
  222. writexymnu:                             ;write text in menu style
  223.     ld ($8333),hl
  224.     ld hl,(PROGRAM_ADDR)
  225.     add hl,de
  226.     ROM_CALL(D_ZM_STR)
  227.     ret
  228. horizline:
  229.     ld b,16                         ;set 16 bytes (a horizontal line) to 
  230. hlo:    ld (hl),a                       ;bitmap stored in a    
  231.     inc hl
  232.     djnz hlo
  233.     ret
  234. drawpic:                ;de -> pic (16x16)
  235.     push hl                ;hl -> destination
  236.     ld hl,(PROGRAM_ADDR)
  237.     add hl,de
  238.     ex de,hl
  239.     pop hl
  240.     ld b,16
  241. dp1:    ld a,(de)
  242.     ld (hl),a
  243.     inc hl
  244.     inc de
  245.     ld a,(de)
  246.     ld (hl),a
  247.     push de
  248.     ld de,15
  249.     add hl,de
  250.     pop de
  251.     inc de
  252.     djnz dp1
  253.     ret
  254.  
  255.  
  256. copystr:.db "(c) by  Philip Graf",0
  257.  
  258. pic1:    .db %11111111,%11111111
  259.     .db %10000000,%00000001
  260.     .db %10000000,%00000001
  261.     .db %10000000,%00000001
  262.     .db %10000011,%11000001
  263.     .db %10000100,%00100001
  264.     .db %10000100,%00100001
  265.     .db %10000100,%00100001
  266.     .db %10000100,%00100001
  267.     .db %10001000,%00010001
  268.     .db %10001000,%00010001
  269.     .db %10011111,%11111001
  270.     .db %10000011,%00000001
  271.     .db %10000000,%00000001
  272.     .db %10000000,%00000001
  273.     .db %11111111,%11111111
  274. pic2:    .db %11111111,%11111111
  275.     .db %10000000,%00000001
  276.     .db %10000000,%10000001
  277.     .db %10000000,%10000001
  278.     .db %10000001,%10000001
  279.     .db %10000010,%01000001
  280.     .db %10000010,%01000001
  281.     .db %10000100,%00100001
  282.     .db %10000100,%00100001
  283.     .db %10001110,%00100001
  284.     .db %10001110,%01110001
  285.     .db %10001110,%01110001
  286.     .db %10000000,%01110001
  287.     .db %10000000,%00000001
  288.     .db %10000000,%00000001
  289.     .db %11111111,%11111111
  290. pic3:    .db %11111111,%11111111
  291.     .db %10000000,%00000001
  292.     .db %10000000,%00000001
  293.     .db %10000001,%10000001
  294.     .db %10000010,%01000001
  295.     .db %10000010,%01000001
  296.     .db %10000100,%10100001
  297.     .db %10000100,%10100001
  298.     .db %10001001,%00010001
  299.     .db %10001001,%00010001
  300.     .db %10010010,%00001001
  301.     .db %10010010,%00001001
  302.     .db %10100100,%00000101
  303.     .db %10111111,%11111101
  304.     .db %10000000,%00000001
  305.     .db %11111111,%11111111
  306. pic4:    .db %11111111,%11111111
  307.     .db %10000000,%00000001
  308.     .db %10000010,%01000001
  309.     .db %10001111,%11111001
  310.     .db %10010010,%01000001
  311.     .db %10010010,%01000001
  312.     .db %10010010,%01000001
  313.     .db %10001111,%11110001
  314.     .db %10000010,%01001001
  315.     .db %10000010,%01001001
  316.     .db %10000010,%01001001
  317.     .db %10000010,%01001001
  318.     .db %10011111,%11110001
  319.     .db %10000010,%01000001
  320.     .db %10000000,%00000001
  321.     .db %11111111,%11111111
  322. pic5:    .db %11111111,%11111111
  323.     .db %10000000,%00000001
  324.     .db %10000111,%11100001
  325.     .db %10001000,%00010001
  326.     .db %10010000,%00001001
  327.     .db %10100010,%01000101
  328.     .db %10100010,%01000101
  329.     .db %10100000,%00000101
  330.     .db %10100000,%00000101
  331.     .db %10101000,%00010101
  332.     .db %10100100,%00100101
  333.     .db %10010011,%11001001
  334.     .db %10001000,%00010001
  335.     .db %10000111,%11100001
  336.     .db %10000000,%00000001
  337.     .db %11111111,%11111111
  338. pic6:    .db %11111111,%11111111
  339.     .db %10000000,%00000001
  340.     .db %10000000,%00000001
  341.     .db %10000001,%11100001
  342.     .db %10011110,%00100001
  343.     .db %10010001,%11100001
  344.     .db %10011110,%00100001
  345.     .db %10010000,%00100001
  346.     .db %10010001,%11100001
  347.     .db %10011110,%00100001
  348.     .db %10000000,%00100001
  349.     .db %10000000,%00100001
  350.     .db %10000000,%01110001
  351.     .db %10000000,%11111001
  352.     .db %10000000,%00000001
  353.     .db %11111111,%11111111
  354. pic7:    .db %11111111,%11111111
  355.     .db %10000000,%00000001
  356.     .db %10000000,%00000001
  357.     .db %10100000,%00000101
  358.     .db %10110001,%10001101
  359.     .db %10101010,%01010101
  360.     .db %10100100,%00100101
  361.     .db %10100000,%00000101
  362.     .db %10100001,%10000101
  363.     .db %10010010,%01001001
  364.     .db %10010001,%10001001
  365.     .db %10010000,%00001001
  366.     .db %10011111,%11111001
  367.     .db %10000000,%00000001
  368.     .db %10000000,%00000001
  369.     .db %11111111,%11111111
  370. pic8:    .db %11111111,%11111111
  371.     .db %10000000,%00000001
  372.     .db %10110001,%10001101
  373.     .db %10111001,%10011101
  374.     .db %10011101,%10111001
  375.     .db %10001111,%11110001
  376.     .db %10000100,%00100001
  377.     .db %10111101,%10111101
  378.     .db %10111101,%10111101
  379.     .db %10000100,%00100001
  380.     .db %10001111,%11110001
  381.     .db %10011101,%10111001
  382.     .db %10111001,%10011101
  383.     .db %10110001,%10001101
  384.     .db %10000000,%00000001
  385.     .db %11111111,%11111111
  386. backpic:
  387.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  388.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000110,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  389.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00111110,%00000000,%00000000,%00000000,%00000110,%01100000,%00000000,%00000000,%00000000,%00000000,%00000000
  390.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%01111111,%00000000,%00000000,%00000000,%00000100,%01000011,%00000000,%00000000,%00000000,%00000000,%00000000
  391.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100011,%10000000,%00000000,%00000000,%00001100,%00000011,%00000000,%00000000,%00000000,%00000000,%00000000
  392.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100001,%10000000,%00000000,%00000000,%00001100,%00000011,%00000000,%00000000,%00000000,%00000000,%00000000
  393.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100011,%00000011,%11000100,%11100000,%11101000,%10001111,%10000000,%00000000,%00000000,%00000000,%00000000
  394.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%11000111,%00001111,%11101101,%11100011,%11111001,%10011111,%10000000,%00000000,%00000000,%00000000,%00000000
  395.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%11111110,%00011100,%11001110,%01100111,%00011001,%10000110,%00000000,%00000000,%00000000,%00000000,%00000000
  396.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%11111111,%00011000,%11001100,%01100110,%00011001,%10000110,%00000000,%00000000,%00000000,%00000000,%00000000
  397.     .db %11111111,%11111111,%11111111,%11111111,%11111101,%10000111,%00110001,%10011000,%11001100,%00110011,%00001100,%11111111,%11111111,%11111111,%11111111,%11111111
  398.     .db %11111111,%11111111,%11111111,%11111111,%11111101,%10000011,%00110001,%10011000,%11001100,%00110011,%00001101,%11111111,%11111111,%11111111,%11111111,%11111111
  399.     .db %00000000,%00000000,%00000000,%00000000,%00000001,%10001110,%00110001,%10011000,%11001110,%01110011,%00001100,%00000000,%00000000,%00000000,%00000000,%00000000
  400.     .db %00000000,%00000000,%00000000,%00000000,%00000011,%11111100,%00111111,%10111001,%10001111,%11110110,%00011000,%00000000,%00000000,%00000000,%00000000,%00000000
  401.     .db %00000000,%00000000,%00000000,%00000000,%00000011,%11110000,%00011100,%10110001,%10000111,%11100110,%00011000,%00000000,%00000000,%00000000,%00000000,%00000000
  402.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  403.     .db %00000000,%00000000,%00000000,%00110000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00011000,%00000000,%00000000,%00000000
  404.     .db %00000000,%00000000,%00000000,%00110000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00011000,%00000000,%00000000,%00000000
  405.     .db %00000000,%00000000,%00111111,%00110000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00011001,%11111000,%00000000,%00000000
  406.     .db %00000000,%00000000,%11111111,%11110000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00011111,%11111110,%00000000,%00000000
  407.     .db %00000000,%00000000,%11100011,%11110000,%10011111,%11100001,%00000000,%10001110,%00000001,%00000000,%10000111,%11111001,%00011111,%10001110,%00000000,%00000000
  408.     .db %00000000,%00000000,%11000000,%01110000,%10011111,%11110001,%00000000,%10001110,%00000001,%00000000,%10001111,%11111001,%00011100,%00000110,%00000000,%00000000
  409.     .db %00000000,%00000000,%10000000,%01110000,%10011111,%11110001,%00000000,%10001110,%00000001,%00000000,%10011111,%11111001,%00011100,%00000010,%00000000,%00000000
  410.     .db %00000000,%00000000,%11000000,%01110000,%10011110,%01111001,%00000000,%10001111,%11110001,%00000000,%10111110,%00011001,%00011100,%00000110,%00000000,%00000000
  411.     .db %00000000,%00000000,%11000000,%01100000,%10011110,%01111001,%00000000,%10001111,%11110001,%00000000,%10111100,%00000001,%00001100,%00000110,%00000000,%00000000
  412.     .db %00100000,%00000011,%11111110,%01100000,%10011110,%11111001,%00000000,%10001111,%11111001,%00000000,%10111101,%11111001,%00001100,%11111111,%10000000,%00001000
  413.     .db %00111000,%00001111,%11111111,%11100000,%10011111,%11110001,%00000000,%10001110,%01111001,%00000000,%10111101,%11111001,%00001111,%11111111,%11100000,%00111000
  414.     .db %00011111,%11111111,%01111011,%11100000,%10011111,%11100001,%00000000,%10001110,%01111001,%00000000,%10111101,%11111001,%00001111,%10111101,%11111111,%11110000
  415.     .db %00001111,%11111000,%01111000,%11100000,%10011111,%10000001,%00000000,%10001110,%01111001,%00000000,%10111110,%00111001,%00001110,%00111100,%00111111,%11100000
  416.     .db %00000111,%10000000,%01111000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10011111,%10111001,%00001110,%00111100,%00000011,%11000000
  417.     .db %00000011,%11100000,%00011000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10011111,%11111001,%00001110,%00110000,%00001111,%10000000
  418.     .db %00000000,%11111100,%00011000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10001111,%11111001,%00001110,%00110000,%01111110,%00000000
  419.     .db %00000000,%01111111,%11111000,%11000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000110,%00111111,%11111100,%00000000
  420.     .db %00000000,%00000111,%11110000,%11000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000110,%00011111,%11000000,%00000000
  421.     .db %00000000,%00000000,%00000000,%11000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000110,%00000000,%00000000,%00000000
  422.     .db %00000000,%00000000,%00000000,%11000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000110,%00000000,%00000000,%00000000
  423.     .db %00000000,%00000000,%00000000,%11000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000110,%00000000,%00000000,%00000000
  424.     .db %00000000,%00000000,%00000001,%11000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000111,%00000000,%00000000,%00000000
  425.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  426.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  427.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  428.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  429.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  430.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  431.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  432.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  433.     .db %11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111
  434.     .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
  435.  
  436. betstr:    .db "Bet:",0
  437.  
  438. rseed:    .db "P"
  439. msav:    .dw 100
  440. bsav:    .dw 10
  441. rand:    ld hl,RANDLOC                    ;random number procedure
  442.     inc (hl)                    ;add old random number with
  443.     ld a,(hl)                    ;a program-code byte
  444.     ld hl,(PROGRAM_ADDR)
  445.     ld d,0
  446.     ld e,a
  447.     add hl,de
  448.     ld a,(hl)
  449.     ld b,a
  450.     ld a,(RANDOM)
  451.     add a,b
  452.     ld (RANDOM),a
  453.     and %00000111                    ;a=0..7
  454.     ret
  455. .END
  456.