home *** CD-ROM | disk | FTP | other *** search
- ;Slot Machine 1.0 (c) by Philip Graf 27.9.98
-
- #include "TI-85.H"
-
- MONEY =TEXT_MEM
- TEMP =TEXT_MEM+2
- BET =TEXT_MEM+4
- RANDOM =TEXT_MEM+6
- RANDLOC =TEXT_MEM+7
- ICONS =TEXT_MEM+8
- ILOC =TEXT_MEM+11
- ; =TEXT_MEM+13
-
- .org 0
- title: .db "Slot Machine v1.0",0
-
- ld hl,ZS_BITS ;new checksum after exit program
- set 0,(hl)
- ld hl,(PROGRAM_ADDR) ;init random number generator
- ld de,rseed
- add hl,de
- ld a,(hl)
- ld (RANDLOC),a
- ld hl,(PROGRAM_ADDR) ;money=saved money
- ld de,msav
- add hl,de
- call LD_HL_MHL
- ld (MONEY),hl
- ld hl,(PROGRAM_ADDR) ;bet=saved bet
- ld de,bsav
- add hl,de
- call LD_HL_MHL
- ld (BET),hl
- ROM_CALL(CLEARLCD)
- ld hl,$0048 ;write title
- ld de,copystr
- CALL_(writexymnu)
- ld hl,$0000
- ld de,title
- CALL_(writexymnu)
- ld hl,$FC70 ;draw line
- ld a,$FF
- CALL_(horizline)
- ld hl,(PROGRAM_ADDR) ;draw background
- ld de,backpic
- add hl,de
- ld bc,768
- ld de,$fc80
- ldir
- showmoney:
- ld hl,$0107 ;write money at (1,7)
- ld ($800c),hl
- ld hl,(MONEY)
- ROM_CALL(D_HL_DECI)
- ld a,'$' ;write "$" after money
- ROM_CALL(TX_CHARPUT)
- ld hl,$0a07 ;write betstr at (10,7)
- ld de,betstr
- CALL_(writexy)
- ld hl,$1307
- ld ($800c),hl
- ld a,'$'
- ROM_CALL(TX_CHARPUT) ;write "$" after bet
- showbet:
- ld hl,$0e07
- ld ($800c),hl
- ld hl,(BET) ;write bet at (14,7)
- ROM_CALL(D_HL_DECI)
- keyloop:
- call GET_KEY
- cp K_EXIT
- jr z,exit
- cp K_2ND
- jr z,doit
- cp K_UP
- jr z,kup
- cp K_DOWN
- jr z,kdown
- jr keyloop
-
- kup: ld hl,(MONEY)
- ex de,hl
- ld hl,(BET)
- call CP_HL_DE ;compare bet with money
- jr z,keyloop ;don't increase if equal
- inc hl
- ld (BET),hl
- jr showbet
- kdown: ld hl,(BET)
- dec hl
- ld a,l
- or h
- jr z,keyloop ;don't decrease if bet is already 1$
- ld (BET),hl
- jr showbet
-
- exit: ld a,(RANDLOC) ;exit procedure
- ld hl,(PROGRAM_ADDR) ;save random number
- push hl
- ld de,rseed
- add hl,de
- ld (hl),a
- pop hl
- push hl ;save money
- ld de,msav
- add hl,de
- ld de,(MONEY)
- ld (hl),e
- inc hl
- ld (hl),d
- pop hl ;save bet
- ld de,bsav
- add hl,de
- ld de,(BET)
- ld (hl),e
- inc hl
- ld (hl),d
- ret ;exit
-
- doit: ld b,3 ;repeat for all 3 icons
- ld hl,$fda4 ;screenaddress for the 1st icon
- ld (TEMP),hl
- ld hl,ICONS ;init ILOC
- ld (ILOC),hl
- d3: push bc
- CALL_(rand) ;randomize
- ld hl,(ILOC)
- ld (hl),a
- ld hl,pic1 ;memaddress for the 1st picture
- or a
- jr z,d1 ;calculate memaddress for picture
- ld de,32
- ld b,a
- d2: add hl,de
- djnz d2
- d1: ex de,hl ;draw it
- ld hl,(TEMP)
- push hl
- CALL_(drawpic)
- pop hl
- inc l ;screenaddress for next icon
- inc l
- inc l
- ld (TEMP),hl
- ld hl,ILOC ;update ILOC for next icon
- inc (hl)
- pop bc
- djnz d3
- ld hl,TEMP ;calculate profit/loss
- ld (hl),0 ;winfactor=0
- ld a,(ICONS)
- ld b,a
- ld a,(ICONS+1)
- cp b ;compare ICON 0 with 1
- jr nz,d4
- inc (hl)
- d4: ld a,(ICONS+2)
- cp b ;compare ICON 0 with 2
- jr nz,d5
- inc (hl)
- d5: ld b,a
- ld a,(ICONS+1)
- cp b ;compare ICON 2 with 1
- jr nz,d6
- inc (hl)
- d6: ld b,(hl)
- ld a,b ;if winfactor=0 then subtract bet
- or a
- jr z,d8
- ld de,(BET) ;else add bet*winfactor
- ld hl,(MONEY)
- d7: add hl,de
- djnz d7
- ld (MONEY),hl
- JUMP_(showmoney)
- d8: ld hl,(BET) ;subtract bet
- ld de,(MONEY)
- ld a,d
- sub h
- ld (TEMP+1),a
- ld a,e
- sub l
- ld (TEMP),a
- ld a,e
- cp l
- jr nc,d9
- ld hl,TEMP+1
- dec (hl)
- d9: ld hl,(TEMP)
- ld (MONEY),hl
- ld a,h ;check if money=0
- or l
- jr z,gameover ;game over if so
- ld de,(BET) ;adjust bet if necessary
- call CP_HL_DE
- jr nc,d10 ;bet must not be greater than money
- ld (BET),hl
- d10: JUMP_(showmoney)
-
- gameover:
- ld hl,$0107 ;write gostr at (1,7)
- ld ($800c),hl
- ld de,gostr
- CALL_(writexy)
- ld hl,100
- ld (MONEY),hl
- ld hl,10
- ld (BET),hl
- g1: call GET_KEY ;wait for EXIT-key being pressed
- cp K_EXIT
- jr nz,g1
- JUMP_(exit)
-
- gostr: .db "---= GAME OVER =---",0
-
- writexy: ;write text in normal style
- ld ($800C),hl
- ld hl,(PROGRAM_ADDR)
- add hl,de
- ROM_CALL(D_ZT_STR)
- ret
- writexymnu: ;write text in menu style
- ld ($8333),hl
- ld hl,(PROGRAM_ADDR)
- add hl,de
- ROM_CALL(D_ZM_STR)
- ret
- horizline:
- ld b,16 ;set 16 bytes (a horizontal line) to
- hlo: ld (hl),a ;bitmap stored in a
- inc hl
- djnz hlo
- ret
- drawpic: ;de -> pic (16x16)
- push hl ;hl -> destination
- ld hl,(PROGRAM_ADDR)
- add hl,de
- ex de,hl
- pop hl
- ld b,16
- dp1: ld a,(de)
- ld (hl),a
- inc hl
- inc de
- ld a,(de)
- ld (hl),a
- push de
- ld de,15
- add hl,de
- pop de
- inc de
- djnz dp1
- ret
-
-
- copystr:.db "(c) by Philip Graf",0
-
- pic1: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %10000011,%11000001
- .db %10000100,%00100001
- .db %10000100,%00100001
- .db %10000100,%00100001
- .db %10000100,%00100001
- .db %10001000,%00010001
- .db %10001000,%00010001
- .db %10011111,%11111001
- .db %10000011,%00000001
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic2: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000000,%10000001
- .db %10000000,%10000001
- .db %10000001,%10000001
- .db %10000010,%01000001
- .db %10000010,%01000001
- .db %10000100,%00100001
- .db %10000100,%00100001
- .db %10001110,%00100001
- .db %10001110,%01110001
- .db %10001110,%01110001
- .db %10000000,%01110001
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic3: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %10000001,%10000001
- .db %10000010,%01000001
- .db %10000010,%01000001
- .db %10000100,%10100001
- .db %10000100,%10100001
- .db %10001001,%00010001
- .db %10001001,%00010001
- .db %10010010,%00001001
- .db %10010010,%00001001
- .db %10100100,%00000101
- .db %10111111,%11111101
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic4: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000010,%01000001
- .db %10001111,%11111001
- .db %10010010,%01000001
- .db %10010010,%01000001
- .db %10010010,%01000001
- .db %10001111,%11110001
- .db %10000010,%01001001
- .db %10000010,%01001001
- .db %10000010,%01001001
- .db %10000010,%01001001
- .db %10011111,%11110001
- .db %10000010,%01000001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic5: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000111,%11100001
- .db %10001000,%00010001
- .db %10010000,%00001001
- .db %10100010,%01000101
- .db %10100010,%01000101
- .db %10100000,%00000101
- .db %10100000,%00000101
- .db %10101000,%00010101
- .db %10100100,%00100101
- .db %10010011,%11001001
- .db %10001000,%00010001
- .db %10000111,%11100001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic6: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %10000001,%11100001
- .db %10011110,%00100001
- .db %10010001,%11100001
- .db %10011110,%00100001
- .db %10010000,%00100001
- .db %10010001,%11100001
- .db %10011110,%00100001
- .db %10000000,%00100001
- .db %10000000,%00100001
- .db %10000000,%01110001
- .db %10000000,%11111001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic7: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %10100000,%00000101
- .db %10110001,%10001101
- .db %10101010,%01010101
- .db %10100100,%00100101
- .db %10100000,%00000101
- .db %10100001,%10000101
- .db %10010010,%01001001
- .db %10010001,%10001001
- .db %10010000,%00001001
- .db %10011111,%11111001
- .db %10000000,%00000001
- .db %10000000,%00000001
- .db %11111111,%11111111
- pic8: .db %11111111,%11111111
- .db %10000000,%00000001
- .db %10110001,%10001101
- .db %10111001,%10011101
- .db %10011101,%10111001
- .db %10001111,%11110001
- .db %10000100,%00100001
- .db %10111101,%10111101
- .db %10111101,%10111101
- .db %10000100,%00100001
- .db %10001111,%11110001
- .db %10011101,%10111001
- .db %10111001,%10011101
- .db %10110001,%10001101
- .db %10000000,%00000001
- .db %11111111,%11111111
- backpic:
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000110,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00111110,%00000000,%00000000,%00000000,%00000110,%01100000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%01111111,%00000000,%00000000,%00000000,%00000100,%01000011,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100011,%10000000,%00000000,%00000000,%00001100,%00000011,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100001,%10000000,%00000000,%00000000,%00001100,%00000011,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%01100011,%00000011,%11000100,%11100000,%11101000,%10001111,%10000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%11000111,%00001111,%11101101,%11100011,%11111001,%10011111,%10000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%11111110,%00011100,%11001110,%01100111,%00011001,%10000110,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%11111111,%00011000,%11001100,%01100110,%00011001,%10000110,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %11111111,%11111111,%11111111,%11111111,%11111101,%10000111,%00110001,%10011000,%11001100,%00110011,%00001100,%11111111,%11111111,%11111111,%11111111,%11111111
- .db %11111111,%11111111,%11111111,%11111111,%11111101,%10000011,%00110001,%10011000,%11001100,%00110011,%00001101,%11111111,%11111111,%11111111,%11111111,%11111111
- .db %00000000,%00000000,%00000000,%00000000,%00000001,%10001110,%00110001,%10011000,%11001110,%01110011,%00001100,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000011,%11111100,%00111111,%10111001,%10001111,%11110110,%00011000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000011,%11110000,%00011100,%10110001,%10000111,%11100110,%00011000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00110000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00011000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00110000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00011000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00111111,%00110000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00011001,%11111000,%00000000,%00000000
- .db %00000000,%00000000,%11111111,%11110000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00011111,%11111110,%00000000,%00000000
- .db %00000000,%00000000,%11100011,%11110000,%10011111,%11100001,%00000000,%10001110,%00000001,%00000000,%10000111,%11111001,%00011111,%10001110,%00000000,%00000000
- .db %00000000,%00000000,%11000000,%01110000,%10011111,%11110001,%00000000,%10001110,%00000001,%00000000,%10001111,%11111001,%00011100,%00000110,%00000000,%00000000
- .db %00000000,%00000000,%10000000,%01110000,%10011111,%11110001,%00000000,%10001110,%00000001,%00000000,%10011111,%11111001,%00011100,%00000010,%00000000,%00000000
- .db %00000000,%00000000,%11000000,%01110000,%10011110,%01111001,%00000000,%10001111,%11110001,%00000000,%10111110,%00011001,%00011100,%00000110,%00000000,%00000000
- .db %00000000,%00000000,%11000000,%01100000,%10011110,%01111001,%00000000,%10001111,%11110001,%00000000,%10111100,%00000001,%00001100,%00000110,%00000000,%00000000
- .db %00100000,%00000011,%11111110,%01100000,%10011110,%11111001,%00000000,%10001111,%11111001,%00000000,%10111101,%11111001,%00001100,%11111111,%10000000,%00001000
- .db %00111000,%00001111,%11111111,%11100000,%10011111,%11110001,%00000000,%10001110,%01111001,%00000000,%10111101,%11111001,%00001111,%11111111,%11100000,%00111000
- .db %00011111,%11111111,%01111011,%11100000,%10011111,%11100001,%00000000,%10001110,%01111001,%00000000,%10111101,%11111001,%00001111,%10111101,%11111111,%11110000
- .db %00001111,%11111000,%01111000,%11100000,%10011111,%10000001,%00000000,%10001110,%01111001,%00000000,%10111110,%00111001,%00001110,%00111100,%00111111,%11100000
- .db %00000111,%10000000,%01111000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10011111,%10111001,%00001110,%00111100,%00000011,%11000000
- .db %00000011,%11100000,%00011000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10011111,%11111001,%00001110,%00110000,%00001111,%10000000
- .db %00000000,%11111100,%00011000,%11100000,%10011110,%00000001,%00000000,%10001110,%01111001,%00000000,%10001111,%11111001,%00001110,%00110000,%01111110,%00000000
- .db %00000000,%01111111,%11111000,%11000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000110,%00111111,%11111100,%00000000
- .db %00000000,%00000111,%11110000,%11000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000000,%11111111,%11111111,%00000110,%00011111,%11000000,%00000000
- .db %00000000,%00000000,%00000000,%11000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000110,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%11000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000110,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%11000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000000,%10000000,%00000001,%00000110,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000001,%11000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000000,%01111111,%11111110,%00000111,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
- .db %11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111,%11111111
- .db %00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000,%00000000
-
- betstr: .db "Bet:",0
-
- rseed: .db "P"
- msav: .dw 100
- bsav: .dw 10
- rand: ld hl,RANDLOC ;random number procedure
- inc (hl) ;add old random number with
- ld a,(hl) ;a program-code byte
- ld hl,(PROGRAM_ADDR)
- ld d,0
- ld e,a
- add hl,de
- ld a,(hl)
- ld b,a
- ld a,(RANDOM)
- add a,b
- ld (RANDOM),a
- and %00000111 ;a=0..7
- ret
- .END
-