2021-06-18 18:04:47 +00:00
|
|
|
; VGI
|
|
|
|
|
|
|
|
.include "zp.inc"
|
|
|
|
.include "hardware.inc"
|
|
|
|
|
|
|
|
VGI_MAXLEN = 7
|
|
|
|
|
|
|
|
vgi_test:
|
2021-06-19 12:35:20 +00:00
|
|
|
jsr SETGR
|
|
|
|
jsr HGR
|
|
|
|
bit FULLGR
|
2021-06-18 18:04:47 +00:00
|
|
|
|
2021-06-19 19:29:27 +00:00
|
|
|
jsr make_tables
|
|
|
|
|
2021-06-18 18:04:47 +00:00
|
|
|
; get pointer to image data
|
|
|
|
|
2021-06-22 00:21:07 +00:00
|
|
|
; lda #<fireplace_data
|
2021-06-21 04:52:15 +00:00
|
|
|
; sta VGIL
|
2021-06-22 00:21:07 +00:00
|
|
|
; lda #>fireplace_data
|
2021-06-21 04:52:15 +00:00
|
|
|
; sta VGIH
|
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
lda #<clock_data
|
|
|
|
sta VGIL
|
|
|
|
lda #>clock_data
|
|
|
|
sta VGIH
|
|
|
|
|
2021-06-19 12:35:20 +00:00
|
|
|
jsr play_vgi
|
|
|
|
|
|
|
|
jsr wait_until_keypress
|
|
|
|
|
|
|
|
bit TEXTGR
|
|
|
|
|
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
loopy:
|
|
|
|
lda #<string1
|
|
|
|
sta OUTL
|
|
|
|
lda #>string1
|
|
|
|
sta OUTH
|
|
|
|
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
|
2021-06-21 19:52:04 +00:00
|
|
|
; Rocket
|
2021-06-19 12:35:20 +00:00
|
|
|
|
2021-06-21 19:52:04 +00:00
|
|
|
bit FULLGR
|
2021-06-19 12:35:20 +00:00
|
|
|
|
2021-06-21 04:52:15 +00:00
|
|
|
lda #<rocket_data
|
|
|
|
sta VGIL
|
|
|
|
lda #>rocket_data
|
|
|
|
sta VGIH
|
|
|
|
|
|
|
|
jsr play_vgi
|
|
|
|
|
|
|
|
jsr wait_until_keypress
|
|
|
|
|
|
|
|
bit TEXTGR
|
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
lda #<string4
|
|
|
|
sta OUTL
|
|
|
|
lda #>string4
|
|
|
|
sta OUTH
|
|
|
|
|
|
|
|
jsr fake_input
|
|
|
|
|
|
|
|
|
2021-06-21 19:52:04 +00:00
|
|
|
; Rocket Door
|
|
|
|
|
|
|
|
bit FULLGR
|
|
|
|
|
|
|
|
lda #<rocket_door_data
|
|
|
|
sta VGIL
|
|
|
|
lda #>rocket_door_data
|
|
|
|
sta VGIH
|
|
|
|
|
|
|
|
jsr play_vgi
|
|
|
|
|
|
|
|
jsr wait_until_keypress
|
|
|
|
|
|
|
|
bit TEXTGR
|
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
lda #<string5
|
|
|
|
sta OUTL
|
|
|
|
lda #>string5
|
|
|
|
sta OUTH
|
|
|
|
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
|
2021-06-21 19:52:04 +00:00
|
|
|
; Red Book
|
|
|
|
|
|
|
|
bit FULLGR
|
|
|
|
|
|
|
|
lda #<red_book_data
|
|
|
|
sta VGIL
|
|
|
|
lda #>red_book_data
|
|
|
|
sta VGIH
|
|
|
|
|
|
|
|
jsr play_vgi
|
|
|
|
|
|
|
|
jsr wait_until_keypress
|
|
|
|
|
|
|
|
bit TEXTGR
|
|
|
|
|
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
lda #<string7
|
|
|
|
sta OUTL
|
|
|
|
lda #>string7
|
|
|
|
sta OUTH
|
|
|
|
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
|
2021-06-19 12:35:20 +00:00
|
|
|
|
2021-06-22 00:21:07 +00:00
|
|
|
;==========================
|
|
|
|
; Fireplace
|
|
|
|
|
|
|
|
bit FULLGR
|
|
|
|
|
|
|
|
lda #<fireplace_data
|
|
|
|
sta VGIL
|
|
|
|
lda #>fireplace_data
|
|
|
|
sta VGIH
|
|
|
|
|
|
|
|
jsr play_vgi
|
|
|
|
|
|
|
|
jsr wait_until_keypress
|
|
|
|
|
|
|
|
bit TEXTGR
|
|
|
|
|
|
|
|
|
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
lda #<string10
|
|
|
|
sta OUTL
|
|
|
|
lda #>string10
|
|
|
|
sta OUTH
|
|
|
|
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
jsr fake_input
|
|
|
|
|
|
|
|
|
|
|
|
|
2021-06-21 04:52:15 +00:00
|
|
|
; jmp loopy
|
2021-06-19 12:35:20 +00:00
|
|
|
done:
|
|
|
|
jmp done
|
|
|
|
|
|
|
|
|
|
|
|
;==================================
|
|
|
|
; play_vgi
|
|
|
|
;==================================
|
|
|
|
play_vgi:
|
|
|
|
|
2021-06-18 18:04:47 +00:00
|
|
|
vgi_loop:
|
|
|
|
|
|
|
|
ldy #0
|
|
|
|
data_smc:
|
|
|
|
lda (VGIL),Y
|
|
|
|
sta VGI_BUFFER,Y
|
|
|
|
iny
|
|
|
|
cpy #VGI_MAXLEN
|
|
|
|
bne data_smc
|
|
|
|
|
|
|
|
lda TYPE
|
|
|
|
and #$f
|
|
|
|
|
|
|
|
clc
|
|
|
|
adc VGIL
|
|
|
|
sta VGIL
|
|
|
|
bcc no_oflo
|
|
|
|
inc VGIH
|
|
|
|
no_oflo:
|
|
|
|
|
|
|
|
lda TYPE
|
|
|
|
lsr
|
|
|
|
lsr
|
|
|
|
lsr
|
|
|
|
lsr
|
|
|
|
|
|
|
|
; look up action in jump table
|
|
|
|
asl
|
|
|
|
tax
|
|
|
|
lda vgi_rts_table+1,X
|
|
|
|
pha
|
|
|
|
lda vgi_rts_table,X
|
|
|
|
pha
|
|
|
|
rts ; "jump" to subroutine
|
|
|
|
|
|
|
|
vgi_rts_table:
|
2021-06-18 19:46:45 +00:00
|
|
|
.word vgi_clearscreen-1 ; 0 = clearscreen
|
|
|
|
.word vgi_simple_rectangle-1 ; 1 = simple rectangle
|
|
|
|
.word vgi_circle-1 ; 2 = plain circle
|
|
|
|
.word vgi_filled_circle-1 ; 3 = filled circle
|
2021-06-18 19:56:51 +00:00
|
|
|
.word vgi_point-1 ; 4 = dot
|
|
|
|
.word vgi_lineto-1 ; 5 = line to
|
2021-06-18 21:05:12 +00:00
|
|
|
.word vgi_dithered_rectangle-1 ; 6 = dithered rectangle
|
2021-06-21 15:12:21 +00:00
|
|
|
.word vgi_vertical_triangle-1 ; 7 = vertical triangle
|
|
|
|
.word vgi_horizontal_triangle-1 ; 8 = horizontal triangle
|
2021-06-21 21:05:45 +00:00
|
|
|
.word vgi_vstripe_rectangle-1 ; 9 = vstripe rectangle
|
2021-06-18 18:04:47 +00:00
|
|
|
.word all_done-1
|
|
|
|
.word all_done-1
|
|
|
|
.word all_done-1
|
|
|
|
.word all_done-1
|
|
|
|
.word all_done-1
|
2021-06-18 19:46:45 +00:00
|
|
|
.word all_done-1 ; 15 = done
|
2021-06-18 18:04:47 +00:00
|
|
|
|
|
|
|
all_done:
|
2021-06-19 12:35:20 +00:00
|
|
|
rts
|
2021-06-18 18:04:47 +00:00
|
|
|
|
|
|
|
|
|
|
|
.include "vgi_clearscreen.s"
|
2021-06-18 19:46:45 +00:00
|
|
|
.include "vgi_circles.s"
|
2021-06-18 21:05:12 +00:00
|
|
|
.include "vgi_rectangle.s"
|
2021-06-18 19:56:51 +00:00
|
|
|
.include "vgi_lines.s"
|
2021-06-21 15:12:21 +00:00
|
|
|
.include "vgi_triangles.s"
|
2021-06-18 18:04:47 +00:00
|
|
|
|
|
|
|
.include "clock.data"
|
2021-06-21 04:52:15 +00:00
|
|
|
.include "rocket.data"
|
2021-06-21 19:52:04 +00:00
|
|
|
.include "rocket_door.data"
|
|
|
|
.include "red_book.data"
|
2021-06-22 00:21:07 +00:00
|
|
|
.include "fireplace.data"
|
2021-06-19 12:35:20 +00:00
|
|
|
|
|
|
|
|
|
|
|
; string data
|
|
|
|
;
|
|
|
|
|
|
|
|
string1:
|
|
|
|
.byte "YOU SEE A CLOCK TOWER READING 12:00",13
|
|
|
|
.byte " LEFT/RIGHT/FORWARD",13,0
|
|
|
|
|
|
|
|
; SWIM TO TOWER
|
|
|
|
string2:
|
|
|
|
.byte "YOU DON'T KNOW HOW TO ",34,"SWIM",34,13,0
|
|
|
|
|
|
|
|
; WADE TO TOWER
|
|
|
|
string3:
|
|
|
|
.byte "THE KRAKEN WILL EAT YOU",13,0
|
|
|
|
|
|
|
|
; I AM WILLING TO TAKE THAT RISK
|
|
|
|
|
|
|
|
string4:
|
|
|
|
.byte "YOU SEE A MYSTERIOUS SPACESHIP",13
|
|
|
|
.byte " LEFT/RIGHT/FORWARD",13,0
|
|
|
|
|
|
|
|
string5:
|
2021-06-21 21:15:30 +00:00
|
|
|
.byte "YOU ARE CLOSE TO THE SPACESHIP",13
|
|
|
|
.byte "YOU SEE A DOOR",13,0
|
2021-06-19 12:35:20 +00:00
|
|
|
|
|
|
|
; OPEN DOOR
|
|
|
|
|
|
|
|
string6:
|
2021-06-21 21:15:30 +00:00
|
|
|
.byte "THE DOOR IS LOCKED",13
|
|
|
|
.byte "ATRUS HATES YOU",13,0
|
|
|
|
|
|
|
|
;string7:
|
|
|
|
;.byte "SORRY, I DON'T UNDERSTAND THAT",0
|
2021-06-19 12:35:20 +00:00
|
|
|
|
|
|
|
string7:
|
2021-06-21 21:15:30 +00:00
|
|
|
.byte "YOU SEE A RED BOOK",13
|
|
|
|
.byte "NEXT TO IT IS A PAGE",13,0
|
2021-06-19 12:35:20 +00:00
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
string8:
|
|
|
|
.byte "WHICH PAGE?",13,0
|
|
|
|
|
|
|
|
string9:
|
|
|
|
.byte "I'D SAY IT'S MORE OF A PURPLE COLOR",13,0
|
2021-06-19 12:35:20 +00:00
|
|
|
|
2021-06-22 00:21:07 +00:00
|
|
|
string10:
|
|
|
|
.byte "THIS IS A MOST UNUSUAL FIREPLACE",13
|
|
|
|
.byte "THERE ARE MANY BUTTONS HERE",13,0
|
|
|
|
|
|
|
|
string11:
|
|
|
|
.byte "WHICH BUTTON?",13,0
|
|
|
|
|
|
|
|
string12:
|
|
|
|
.byte "THAT WAS NOT THE RIGHT ONE",13,0
|
|
|
|
|
2021-06-19 12:35:20 +00:00
|
|
|
; PICK UP PAGE
|
|
|
|
; WHICH PAGE?
|
|
|
|
; THE RED ONE
|
|
|
|
; I'D SAY IT'S MORE OF A PURPLE COLOR
|
|
|
|
; JUST PICK IT UP!
|
|
|
|
|
|
|
|
; THIS WEIRD FIREPLACE HAS MANY BUTTONS
|
|
|
|
|
|
|
|
; PRESS BUTTON
|
|
|
|
|
|
|
|
; WHICH ONE?
|
|
|
|
|
|
|
|
; REALLY?
|
|
|
|
|
2021-06-21 21:15:30 +00:00
|
|
|
; WHICH ONE (0..126)
|
|
|
|
|
|
|
|
; NOTHING HAPPENS
|
2021-06-19 12:35:20 +00:00
|
|
|
|
|
|
|
;=========================
|
|
|
|
; print_string
|
|
|
|
;=========================
|
|
|
|
print_string:
|
|
|
|
ldy #0
|
|
|
|
|
|
|
|
print_string_loop:
|
|
|
|
lda (OUTL),Y
|
|
|
|
beq done_print_string
|
|
|
|
|
|
|
|
ora #$80
|
|
|
|
jsr COUT
|
|
|
|
|
|
|
|
iny
|
|
|
|
|
|
|
|
jmp print_string_loop
|
|
|
|
|
|
|
|
done_print_string:
|
|
|
|
tya ; point to next string
|
|
|
|
sec
|
|
|
|
adc OUTL
|
|
|
|
sta OUTL
|
|
|
|
lda OUTH
|
|
|
|
adc #0
|
|
|
|
sta OUTH
|
|
|
|
rts
|
|
|
|
|
|
|
|
;============================
|
|
|
|
; WAIT UNTIL KEYPRESS
|
|
|
|
;============================
|
|
|
|
|
|
|
|
wait_until_keypress:
|
|
|
|
|
|
|
|
lda KEYPRESS
|
|
|
|
bpl wait_until_keypress
|
|
|
|
|
|
|
|
bit KEYRESET
|
|
|
|
|
|
|
|
rts
|
|
|
|
|
|
|
|
;=============================
|
|
|
|
; fake input
|
|
|
|
;=============================
|
|
|
|
fake_input:
|
|
|
|
jsr print_string
|
|
|
|
|
|
|
|
jsr CROUT1 ; print linefeed/cr
|
|
|
|
|
|
|
|
lda #'>'+$80
|
|
|
|
jsr COUT
|
|
|
|
lda #' '+$80
|
|
|
|
jsr COUT
|
|
|
|
|
|
|
|
jsr GETLN1
|
|
|
|
|
|
|
|
rts
|