mirror of
https://github.com/deater/dos33fsprogs.git
synced 2024-10-31 10:13:35 +00:00
a1732840d1
also fix bug in text demo, whole problem of shared asm includes
328 lines
3.8 KiB
ArmAsm
328 lines
3.8 KiB
ArmAsm
; Closing Text Spin Demo
|
|
|
|
.include "zp.inc"
|
|
|
|
;===========
|
|
; CONSTANTS
|
|
;===========
|
|
NUM_CREDITS EQU 10
|
|
|
|
;================================
|
|
; Clear screen and setup graphics
|
|
;================================
|
|
|
|
jsr clear_screens ; clear top/bottom of page 0/1
|
|
jsr set_gr_page0
|
|
|
|
|
|
;===============
|
|
; Init Variables
|
|
;===============
|
|
lda #0 ; 2
|
|
sta DRAW_PAGE ; 3
|
|
|
|
|
|
;===============
|
|
; Init screen
|
|
;===============
|
|
|
|
jsr init_screen
|
|
jsr page_flip ; 6
|
|
jsr init_screen
|
|
|
|
;===========================
|
|
;===========================
|
|
; Main Loop
|
|
;===========================
|
|
;===========================
|
|
|
|
forever_loop:
|
|
ldx #0
|
|
stx YY
|
|
|
|
lda #>credits
|
|
sta OUTH
|
|
lda #<credits
|
|
sta OUTL
|
|
|
|
outer_loop:
|
|
|
|
|
|
credit_loop:
|
|
|
|
ldy #0
|
|
|
|
lda (OUTL),Y ; load x offset
|
|
clc ; and add 7 to it
|
|
adc #7
|
|
sta CH
|
|
|
|
lda #22 ; y hardcoded at 22
|
|
sta CV
|
|
|
|
lda #$f6 ; - 10
|
|
sta XX
|
|
inner_loop:
|
|
|
|
jsr htab_vtab
|
|
|
|
ldy #1 ; loop through the string
|
|
print_loop:
|
|
lda (OUTL),Y
|
|
beq done_print
|
|
|
|
clc
|
|
adc XX ; add -10
|
|
|
|
ora #$80 ; convert from ASCII
|
|
sta (BASL),Y ; write to display
|
|
iny ; point to next
|
|
jmp print_loop
|
|
|
|
done_print:
|
|
|
|
|
|
|
|
;==================
|
|
; flip pages
|
|
;==================
|
|
|
|
jsr page_flip ; 6
|
|
|
|
|
|
;==================
|
|
; delay?
|
|
;==================
|
|
|
|
lda #$C0
|
|
bit SPEAKER
|
|
jsr WAIT
|
|
|
|
ldx XX
|
|
inx
|
|
stx XX
|
|
cpx #1
|
|
bne inner_loop
|
|
|
|
;==================
|
|
; Delay since done
|
|
;==================
|
|
|
|
lda #$F0
|
|
jsr WAIT
|
|
lda #$F0
|
|
jsr WAIT
|
|
lda #$F0
|
|
jsr WAIT
|
|
lda #$F0
|
|
jsr WAIT
|
|
|
|
;==================
|
|
; Next credit
|
|
;==================
|
|
|
|
lda #8
|
|
sta CH
|
|
lda #22
|
|
sta CV
|
|
|
|
lda OUTH
|
|
pha
|
|
lda OUTL
|
|
pha
|
|
|
|
lda #>empty
|
|
sta OUTH
|
|
lda #<empty
|
|
sta OUTL
|
|
|
|
jsr print_both_pages
|
|
|
|
pla
|
|
sta OUTL
|
|
pla
|
|
sta OUTH
|
|
|
|
ldy #0
|
|
skip_credit:
|
|
lda (OUTL),Y
|
|
|
|
inc OUTL
|
|
bne overflow
|
|
inc OUTH
|
|
overflow:
|
|
cmp #0
|
|
beq done_skip
|
|
jmp skip_credit
|
|
done_skip:
|
|
|
|
ldx YY
|
|
inx
|
|
stx YY
|
|
cpx #10
|
|
beq forever
|
|
jmp outer_loop
|
|
|
|
;==================
|
|
; loop forever
|
|
;==================
|
|
forever:
|
|
jmp forever_loop ; 3
|
|
|
|
|
|
;=====================
|
|
; init screen
|
|
;=====================
|
|
|
|
init_screen:
|
|
lda #$ff
|
|
sta COLOR
|
|
|
|
; HLIN Y, V2 AT A
|
|
ldy #7
|
|
lda #32
|
|
sta V2
|
|
lda #38
|
|
jsr hlin_double
|
|
|
|
lda #$75
|
|
sta COLOR
|
|
|
|
; hlin_double(PAGE0,0,6,38);
|
|
|
|
ldy #0
|
|
lda #6
|
|
sta V2
|
|
lda #38
|
|
jsr hlin_double
|
|
|
|
; hlin_double(PAGE0,33,40,38);
|
|
|
|
ldy #33
|
|
lda #40
|
|
sta V2
|
|
lda #38
|
|
jsr hlin_double
|
|
|
|
; hlin_double(PAGE0,8,31,36);
|
|
|
|
ldy #8
|
|
lda #31
|
|
sta V2
|
|
lda #36
|
|
jsr hlin_double
|
|
|
|
lda #$70
|
|
sta COLOR
|
|
|
|
; hlin_double(PAGE0,7,7,36);
|
|
|
|
ldy #7
|
|
lda #7
|
|
sta V2
|
|
lda #36
|
|
jsr hlin_double
|
|
|
|
; hlin_double(PAGE0,32,32,36);
|
|
ldy #32
|
|
lda #32
|
|
sta V2
|
|
lda #36
|
|
jsr hlin_double
|
|
|
|
; text wings
|
|
|
|
lda #$20
|
|
sta COLOR
|
|
|
|
; hlin_double(0,7,40)
|
|
ldy #0
|
|
lda #7
|
|
sta V2
|
|
lda #40
|
|
jsr hlin_double
|
|
|
|
; hlin_double(32,40,40)
|
|
ldy #32
|
|
lda #40
|
|
sta V2
|
|
lda #40
|
|
jsr hlin_double
|
|
|
|
; hlin_double(0,7,44)
|
|
ldy #0
|
|
lda #7
|
|
sta V2
|
|
lda #44
|
|
jsr hlin_double
|
|
|
|
; hlin_double(0,7,44)
|
|
ldy #32
|
|
lda #40
|
|
sta V2
|
|
lda #44
|
|
jsr hlin_double
|
|
|
|
; hlin_double(7,33,48)
|
|
ldy #7
|
|
lda #32
|
|
sta V2
|
|
lda #46
|
|
jsr hlin_double
|
|
|
|
lda #11
|
|
sta CH
|
|
lda #20
|
|
sta CV
|
|
|
|
lda #>thankz
|
|
sta OUTH
|
|
lda #<thankz
|
|
sta OUTL
|
|
|
|
jsr move_and_print
|
|
|
|
rts
|
|
|
|
empty:
|
|
.asciiz " "
|
|
|
|
; offset can't be 0 or it confuses the next-credit code
|
|
credits:
|
|
.byte 7
|
|
.asciiz "FROGGYSUE"
|
|
.byte 7
|
|
.asciiz "PIANOMAN08"
|
|
.byte 7
|
|
.asciiz "UTOPIA BBS"
|
|
.byte 5
|
|
.asciiz "THE 7HORSEMEN"
|
|
.byte 2
|
|
.asciiz "WEAVE'S WORLD TALKER"
|
|
.byte 6
|
|
.asciiz "STEALTHSUSIE"
|
|
.byte 3
|
|
.asciiz "ECE GRAD BOWLING"
|
|
.byte 6
|
|
.asciiz "CORNELL GCF"
|
|
.byte 1
|
|
.asciiz "ALL MSTIES EVERYWHERE"
|
|
.byte 10
|
|
.asciiz "..."
|
|
|
|
thankz:
|
|
.asciiz "SPECIAL THANKS TO:"
|
|
|
|
|
|
;===============================================
|
|
; External modules
|
|
;===============================================
|
|
|
|
.include "pageflip.s"
|
|
.include "gr_setpage.s"
|
|
;.include "keypress.s"
|
|
.include "gr_offsets.s"
|
|
.include "gr_fast_clear.s"
|
|
.include "gr_hlin.s"
|
|
.include "text_print.s"
|