From 6d2c8c5d953821299bd5d22ce8891e448f33b702 Mon Sep 17 00:00:00 2001 From: blondie7575 Date: Sun, 22 Jul 2018 09:24:32 -0500 Subject: [PATCH] Added missing ASM sample --- Documentation.md | 158 +++++++++++++++++- .../xcshareddata/IDEWorkspaceChecks.plist | 8 + 2 files changed, 165 insertions(+), 1 deletion(-) create mode 100644 WeeGUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist diff --git a/Documentation.md b/Documentation.md index 2f405a8..c783e29 100644 --- a/Documentation.md +++ b/Documentation.md @@ -1243,5 +1243,161 @@ Here is the source code to the BASICDEMO program, included in the WeeGUI disk im 10020 HOME -Here's the source code to the assembly language demo, which shows off the speed of WeeGUI's rendering. This code is also synchronized to the vertical blank, for the smoothest possible animation. +Here's the source code to the assembly language demo, which shows off the speed of WeeGUI's rendering. This code is also synchronized to the vertical blank, for the smoothest possible animation +``` +.include "WeeGUI_MLI.s" + + +.org $6000 + +INBUF = $0200 +DOSCMD = $be03 +KBD = $c000 +KBDSTRB = $c010 + + +main: + + ; BRUN the GUI library + ldx #0 + ldy #0 +@0: lda brunCmdLine,x + beq @1 + sta INBUF,y + inx + iny + bra @0 +@1: jsr DOSCMD + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Show off rendering speed with some snazzy rectangle painting +; + ; Stack: + ; Curr X + ; Curr Y + ; Curr Width + ; Curr Height + + ldx #WGClearScreen + jsr WeeGUI + +animateRects: + lda #38 ; Initialize + pha + lda #11 + pha + lda #2 + pha + lda #2 + pha + +animateRectsEvenLoop: +@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 animateRects + + 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 #64 + ldx #WGFillRect + jsr WeeGUI + ldx #WGStrokeRect + jsr WeeGUI + + jsr delayShort + jsr delayShort + jsr delayShort + jsr checkKbd + + bra animateRectsEvenLoop + + +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 + +checkKbd: + lda KBD + bpl checkKbdDone + sta KBDSTRB + + cmp #241 ; 'q' with high bit set + bne checkKbdDone + + ldx #WGExit + jsr WeeGUI + pla ; Pull our own frame off the stack... + pla + pla + pla + pla ; ...four local variables + return address... + pla + rts ; ...so we can quit to ProDOS from here + +checkKbdDone: + rts + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + +brunCmdLine: + .byte "BRUN weegui",$8d,0 +``` diff --git a/WeeGUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist b/WeeGUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist new file mode 100644 index 0000000..18d9810 --- /dev/null +++ b/WeeGUI.xcodeproj/project.xcworkspace/xcshareddata/IDEWorkspaceChecks.plist @@ -0,0 +1,8 @@ + + + + + IDEDidComputeMac32BitWarning + + +