From aa7425b99a6ffc92fae6db09522a059403001d95 Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Sun, 8 Feb 2015 17:50:44 -0800 Subject: [PATCH] Polish to docs and sample code --- Documentation.md | 10 +-- Makefile | 2 +- ReadMe.md | 7 +- asmdemo.s | 172 +++++++--------------------------------------- weegui.dsk | Bin 143360 -> 143360 bytes weegui_backup.dsk | Bin 0 -> 143360 bytes 6 files changed, 34 insertions(+), 157 deletions(-) create mode 100644 weegui_backup.dsk diff --git a/Documentation.md b/Documentation.md index d7f156a..750f18c 100644 --- a/Documentation.md +++ b/Documentation.md @@ -3,7 +3,7 @@ WeeGUI WeeGUI is a lightweight library for creating graphical user interfaces in 80 column text mode on the Apple IIe Enhanced and Apple IIc family of computers. It supports both keyboard and mouse controls for your interface. It is designed to take minimal RAM (less than 6k), and can be used from assembly language or Applesoft BASIC programs under ProDOS. WeeGUI installs itself at the top of memory, using an area normally vacant in most BASIC and assembly programs. -You can use WeeGUI as a full-blown user interface system, or as a simple drawing library for ASCII art. Use as much or as little of its features as you wish. WeeGUI tries not to enforce any particular structure or use-case on your program. It is intended to be so easy to use that you'll choose it over rolling your own menuing system for whatever application you're building. +You can use WeeGUI as a full-blown user interface system, or as a simple drawing library for ASCII art. Use as much or as little of its features as you wish. WeeGUI tries not to enforce any particular structure or use-case on your program. It is intended to be so easy to use that you'll choose it over rolling your own menuing system for whatever application you're building. Whether you're building the next ProTERM, or just a quick-and-dirty interface for your Arduino project, WeeGUI can be your go-to library.
@@ -46,7 +46,7 @@ When using assembly language, you can install WeeGUI by loading the *WEEGUI* lib ldx #0 ldy #0 - @0: lda bloadCmdLine,x + @0: lda brunCmdLine,x beq @1 sta $0200,y inx @@ -54,7 +54,7 @@ When using assembly language, you can install WeeGUI by loading the *WEEGUI* lib bra @0 @1: jsr $be03 - bloadCmdLine: + brunCmdLine: .byte "BRUN WEEGUI",$8d,0 @@ -147,7 +147,7 @@ A typical assembly language run loop simply waits for keypresses and responds to ; Respond to keys as needed - jmp runLoop + bra runLoop If you want to support the mouse, WeeGUI has you covered. You just need to add one piece to your run loop: @@ -161,7 +161,7 @@ If you want to support the mouse, WeeGUI has you covered. You just need to add o ; Respond to keys as needed - jmp runLoop + bra runLoop Note the call to *WGPendingViewAction* on each pass through the loop. For the mouse, WeeGUI will make note of actions taken by the user, but won't act until you say so. It is up to your program to call *WGPendingViewAction* periodically to allow WeeGUI to handle these events. diff --git a/Makefile b/Makefile index b0da7de..ec09704 100644 --- a/Makefile +++ b/Makefile @@ -18,7 +18,7 @@ PGM=weegui DEMO=asmdemo all: $(DEMO) $(PGM) -#all: $(PGM) + $(DEMO): @PATH=$(PATH):/usr/local/bin; $(CL65) -t apple2enh --start-addr $(ADDRDEMO) -l$(DEMO).lst $(DEMO).s diff --git a/ReadMe.md b/ReadMe.md index bb888a8..726b864 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -2,14 +2,13 @@ Known issues ------------ -- Hitting Reset during a WeeGUI application will leave your Apple II in an unsafe state +- Hitting Reset during a WeeGUI application will leave your Apple II in an unsafe state. - Calling WGEraseView on a view that shares border rendering with other views will require manually redrawing those views. +- ProDOS reports NO BUFFERS AVAILABLE after three successive runs of ASMDEMO. Doing a CAT will restore normal operation. To Do: ------ -- Write sample code -- Update side effects in assembly API - Support for frameless views - Document final memory map - +- Remove references to ORG in docs (except in memory map) diff --git a/asmdemo.s b/asmdemo.s index 354ce31..d509f1b 100644 --- a/asmdemo.s +++ b/asmdemo.s @@ -1,9 +1,9 @@ ; -; guidemo.s +; asmdemo.s ; WeeGUI sample application ; ; Created by Quinn Dunki on 8/15/14. -; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved. +; Copyright (c) 2015 One Girl, One Laptop Productions. All rights reserved. ; @@ -18,17 +18,6 @@ KBD = $c000 KBDSTRB = $c010 -.macro WGCALL16 func,addr - lda #addr - sta PARAM1 - ldx #func - jsr WeeGUI -.endmacro - - -; Sample code main: ; BRUN the GUI library @@ -43,49 +32,19 @@ main: @1: jsr DOSCMD -;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; Show off some WeeGUI features - - jmp animateRects - - ldx #WGClearScreen - jsr WeeGUI - -keyLoop: - ldx #WGPendingViewAction - jsr WeeGUI - - lda KBD - bpl keyLoop - sta KBDSTRB - - and #%01111111 - cmp #113 - beq keyLoop_quit - - jmp keyLoop - -keyLoop_quit: - ldx #WGExit - jsr WeeGUI - rts - - ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; -; animateRects -; Strokes and paints rectangles of many different geometries +; Show off rendering speed with some snazzy rectangle painting ; ; Stack: ; Curr X ; Curr Y ; Curr Width ; Curr Height -animateRects: + ldx #WGClearScreen jsr WeeGUI -animateRectsEven: - +animateRects: lda #38 ; Initialize pha lda #11 @@ -110,7 +69,7 @@ animateRectsEvenLoop: inc sta $0100,x cmp #25 - bcs animateRectsEvenDone + bcs animateRects inx ; Load Width, then modify lda $0100,x @@ -137,7 +96,7 @@ animateRectsEvenLoop: dec sta $0100,x - ldy #'Q'+$80 + ldy #64 ldx #WGFillRect jsr WeeGUI ldx #WGStrokeRect @@ -146,84 +105,10 @@ animateRectsEvenLoop: jsr delayShort jsr delayShort jsr delayShort + jsr checkKbd - jmp animateRectsEvenLoop + bra animateRectsEvenLoop -animateRectsEvenDone: - pla - pla - pla - pla - -animateRectsOdd: - - lda #37 ; Initialize - pha - lda #11 - pha - lda #2 - pha - lda #2 - pha - -animateRectsOddLoop: - ldx #WGClearScreen - jsr WeeGUI - - tsx - inx - lda $0100,x ; Load Height, then modify - sta PARAM3 - inc - inc - sta $0100,x - cmp #25 - bcs animateRectsOddDone - - 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 animateRectsOddLoop - -animateRectsOddDone: - pla - pla - pla - pla - - jmp animateRectsEven delayShort: ; ~1/30 sec pha @@ -251,34 +136,27 @@ delayShortInner: pla rts -delay: ; ~1 sec - pha - phx - phy +checkKbd: + lda KBD + bpl checkKbdDone + sta KBDSTRB - ldy #$ce ; Loop a bunch -delayOuter: - ldx #$ff -delayInner: - nop - nop - nop - nop - nop - nop - nop - dex - bne delayInner - dey - bne delayOuter + cmp #241 ; 'q' with high bit set + bne checkKbdDone - ply - plx + 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: diff --git a/weegui.dsk b/weegui.dsk index f743e786abe16374c7ba0d918c7d1e29935abeca..3e67638937f577154e720b1f721cf8547d7da66d 100644 GIT binary patch delta 186 zcmZp8z|ru4V?#Q(*=_~~4>^5728PEB2_Oa&gIc(&t9z)YKLZr7=`ipycu2sN)dH1m zp39vauvmbVaZ)TR-@1ek>@yjdUYuz7qQJawvU#i)$vc->Q_d>T80Ax!o30qPJX<=v&apoEdvY^CY#3u LH^nWBW4r_aZFfUx delta 223 zcmZp8z|ru4V?#Q(nJXiMyPTRJ1H)s61Q3IXK`q?X)jibHp8*QkbQt&;JS5=CYJti& z&*e@IU{A;Z0w0^njhiJWZ`dX=d0lMKWC5nKNwKU(7KtC&XEHFoIMMJ$fq9>gdBP$F z1(w=HMnGaM!vTSBy#fa`>rWPbVD^ztSmXv2O_(ekt2H@zn~r+zA^{*@fg=%ud_2I` ftW@<_$?dU{3539AO?KI4Er_mmeN)`BIL1o=x3WWd diff --git a/weegui_backup.dsk b/weegui_backup.dsk new file mode 100644 index 0000000000000000000000000000000000000000..4c6eb62877d45fa404dc3e91ca01fd8b0a87d60b GIT binary patch literal 143360 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 V1Q-Gg0fqoWfFZyT_&-A6e*hoCB~}0c literal 0 HcmV?d00001