mirror of
https://github.com/blondie7575/WeeGUI.git
synced 2024-12-12 09:29:03 +00:00
5d00c3286c
- Reimplemented Print unit test - Made it easier to exclude AppleSoft API if desired
369 lines
4.5 KiB
ArmAsm
369 lines
4.5 KiB
ArmAsm
;
|
|
; unit_test.s
|
|
; WeeGui
|
|
;
|
|
; Unit tests of various systems
|
|
;
|
|
; Created by Quinn Dunki on 8/15/14.
|
|
; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved.
|
|
;
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; tortureTestPrint
|
|
; Prints strings in a range of positions and scrolling offsets
|
|
;
|
|
; Stack:
|
|
; Curr Scroll X
|
|
; Curr Scroll Y
|
|
; Delta X
|
|
; Delta Y
|
|
tortureTestPrint:
|
|
ldx #WGClearScreen
|
|
jsr WeeGUI
|
|
|
|
lda #0 ; Initialize
|
|
ldx #WGScrollX
|
|
jsr WeeGUI
|
|
|
|
ldx #WGScrollY
|
|
jsr WeeGUI
|
|
|
|
tortureTestPrint_init:
|
|
WGCALL16 WGCreateView,testPrintView
|
|
|
|
lda #0
|
|
ldx #WGSelectView
|
|
jsr WeeGUI
|
|
|
|
ldx #WGPaintView
|
|
jsr WeeGUI
|
|
|
|
lda #0
|
|
pha
|
|
pha
|
|
lda #-1
|
|
pha
|
|
pha
|
|
|
|
tsx
|
|
inx
|
|
|
|
tortureTestPrint_loop:
|
|
phx
|
|
lda #0 ; Initialize
|
|
sta PARAM0
|
|
sta PARAM1
|
|
ldx #WGSetCursor
|
|
jsr WeeGUI
|
|
plx
|
|
|
|
inx ; Grab current delta X
|
|
lda $0100,x
|
|
inx
|
|
inx
|
|
clc
|
|
adc $0100,x ; Add Scroll X
|
|
sta $0100,x
|
|
beq tortureTestPrint_flipDeltaX ; Check for bounce
|
|
cmp #-5
|
|
beq tortureTestPrint_flipDeltaX
|
|
bra tortureTestPrint_continueX
|
|
|
|
tortureTestPrint_flipDeltaX:
|
|
dex
|
|
dex
|
|
lda $0100,x
|
|
eor #$ff
|
|
inc
|
|
sta $0100,x
|
|
inx
|
|
inx
|
|
|
|
tortureTestPrint_continueX:
|
|
phx
|
|
lda $0100,x
|
|
ldx #WGScrollX ; Apply current X scroll
|
|
jsr WeeGUI
|
|
plx
|
|
dex
|
|
dex
|
|
dex
|
|
|
|
lda $0100,x ; Grab current delta Y
|
|
inx
|
|
inx
|
|
clc
|
|
adc $0100,x ; Add Scroll Y
|
|
sta $0100,x
|
|
beq tortureTestPrint_flipDeltaY ; Check for bounce
|
|
cmp #-5
|
|
beq tortureTestPrint_flipDeltaY
|
|
bra tortureTestPrint_continueY
|
|
|
|
tortureTestPrint_flipDeltaY:
|
|
dex
|
|
dex
|
|
lda $0100,x
|
|
eor #$ff
|
|
inc
|
|
sta $0100,x
|
|
inx
|
|
inx
|
|
|
|
tortureTestPrint_continueY:
|
|
phx
|
|
lda $0100,x
|
|
ldx #WGScrollY
|
|
jsr WeeGUI
|
|
plx
|
|
dex
|
|
dex
|
|
|
|
tortureTestPrint_print:
|
|
; VBL_SYNC
|
|
phx
|
|
ldx #WGEraseViewContents
|
|
jsr WeeGUI
|
|
|
|
WGCALL16 WGPrint,unitTestStr
|
|
|
|
ldx #WGPrint ; Do it again
|
|
jsr WeeGUI
|
|
|
|
; jmp tortureTestPrint_lock
|
|
jsr delay
|
|
|
|
plx
|
|
jmp tortureTestPrint_loop
|
|
|
|
tortureTestPrint_reset:
|
|
pla
|
|
pla
|
|
jmp tortureTestPrint_init
|
|
|
|
tortureTestPrint_lock:
|
|
jmp tortureTestPrint_lock
|
|
|
|
|
|
|
|
;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;
|
|
; tortureTestRects
|
|
; Strokes and paints rectangles of many different geometries
|
|
;
|
|
; Stack:
|
|
; Curr X
|
|
; Curr Y
|
|
; Curr Width
|
|
; Curr Height
|
|
tortureTestRects:
|
|
ldx #WGClearScreen
|
|
jsr WeeGUI
|
|
|
|
tortureTestRectsEven:
|
|
|
|
lda #38 ; Initialize
|
|
pha
|
|
lda #11
|
|
pha
|
|
lda #2
|
|
pha
|
|
lda #2
|
|
pha
|
|
|
|
tortureTestRectsEvenLoop:
|
|
@0: lda $C019 ; Sync to VBL
|
|
bmi @0
|
|
|
|
ldx #WGClearScreen
|
|
jsr WeeGUI
|
|
|
|
tsx
|
|
inx
|
|
lda $0100,x ; Load Height, then modify
|
|
sta PARAM3
|
|
inc
|
|
inc
|
|
sta $0100,x
|
|
cmp #25
|
|
bcs tortureTestRectsEvenDone
|
|
|
|
inx ; Load Width, then modify
|
|
lda $0100,x
|
|
sta PARAM2
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
sta $0100,x
|
|
|
|
inx ; Load Y, then modify
|
|
lda $0100,x
|
|
sta PARAM1
|
|
dec
|
|
sta $0100,x
|
|
|
|
inx ; Load X, then modify
|
|
lda $0100,x
|
|
sta PARAM0
|
|
dec
|
|
dec
|
|
dec
|
|
sta $0100,x
|
|
|
|
ldy #'Q'+$80
|
|
ldx #WGFillRect
|
|
jsr WeeGUI
|
|
ldx #WGStrokeRect
|
|
jsr WeeGUI
|
|
|
|
jsr delayShort
|
|
jsr delayShort
|
|
jsr delayShort
|
|
|
|
jmp tortureTestRectsEvenLoop
|
|
|
|
tortureTestRectsEvenDone:
|
|
pla
|
|
pla
|
|
pla
|
|
pla
|
|
|
|
tortureTestRectsOdd:
|
|
|
|
lda #37 ; Initialize
|
|
pha
|
|
lda #11
|
|
pha
|
|
lda #2
|
|
pha
|
|
lda #2
|
|
pha
|
|
|
|
tortureTestRectsOddLoop:
|
|
ldx #WGClearScreen
|
|
jsr WeeGUI
|
|
|
|
tsx
|
|
inx
|
|
lda $0100,x ; Load Height, then modify
|
|
sta PARAM3
|
|
inc
|
|
inc
|
|
sta $0100,x
|
|
cmp #25
|
|
bcs tortureTestRectsOddDone
|
|
|
|
inx ; Load Width, then modify
|
|
lda $0100,x
|
|
sta PARAM2
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
inc
|
|
sta $0100,x
|
|
|
|
inx ; Load Y, then modify
|
|
lda $0100,x
|
|
sta PARAM1
|
|
dec
|
|
sta $0100,x
|
|
|
|
inx ; Load X, then modify
|
|
lda $0100,x
|
|
sta PARAM0
|
|
dec
|
|
dec
|
|
dec
|
|
sta $0100,x
|
|
|
|
ldy #'Q'+$80
|
|
ldx #WGFillRect
|
|
jsr WeeGUI
|
|
ldx #WGStrokeRect
|
|
jsr WeeGUI
|
|
|
|
jsr delayShort
|
|
jsr delayShort
|
|
jsr delayShort
|
|
|
|
jmp tortureTestRectsOddLoop
|
|
|
|
tortureTestRectsOddDone:
|
|
pla
|
|
pla
|
|
pla
|
|
pla
|
|
|
|
jmp tortureTestRectsEven
|
|
|
|
|
|
|
|
delayShort: ; ~1/30 sec
|
|
pha
|
|
phx
|
|
phy
|
|
|
|
ldy #$06 ; Loop a bit
|
|
delayShortOuter:
|
|
ldx #$ff
|
|
delayShortInner:
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
dex
|
|
bne delayShortInner
|
|
dey
|
|
bne delayShortOuter
|
|
|
|
ply
|
|
plx
|
|
pla
|
|
rts
|
|
|
|
|
|
|
|
|
|
delay: ; ~1 sec
|
|
pha
|
|
phx
|
|
phy
|
|
|
|
ldy #$ce ; Loop a bunch
|
|
delayOuter:
|
|
ldx #$ff
|
|
delayInner:
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
nop
|
|
dex
|
|
bne delayInner
|
|
dey
|
|
bne delayOuter
|
|
|
|
ply
|
|
plx
|
|
pla
|
|
rts
|
|
|
|
|
|
|
|
|
|
testPrintView:
|
|
.byte 0,0,15,6,30,10,40,126
|
|
|
|
unitTestStr:
|
|
.byte "This is a test of the emergency broadcast system. If this had been a real emergency, you would be dead now. Amusingly, it can be noted that if this had been a real emergency, and you were now a steaming pile of ash, there would of course be nobody.",0; to read this message. That begs any number",0; of extistential questions about this very text.",0
|