From 639ba927fcbbf5ccafd363cb15a88ad8a7392451 Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Fri, 16 Jan 2015 08:18:19 -0800 Subject: [PATCH] Bug fixes - Added Exit routine for cleaning up text state and memory allocation - Quitting no longer leaves BASIC in inverse sometimes - Quitting now cleans up ProDOS memory properly - Added Applesoft API for Exit --- Documentation.md | 18 ++++++++++++++++++ ReadMe.md | 4 ---- WeeGUI_MLI.s | 2 ++ applesoft.s | 13 +++++++++++++ asmdemo.s | 3 +++ weegui.dsk | Bin 143360 -> 143360 bytes weegui.s | 24 +++++++++++++++++++++++- 7 files changed, 59 insertions(+), 5 deletions(-) diff --git a/Documentation.md b/Documentation.md index 3883199..922b6ee 100644 --- a/Documentation.md +++ b/Documentation.md @@ -796,6 +796,24 @@ Not available &GET(A$) + +
+ +Miscellaneous Routines +---------------------- + +Other stuff you might need. + +####WGExit +Cleans up and shuts down WeeGUI. If you want your application to return cleanly to Applesoft when its down, you must call this. Otherwise you may get ProDOS complaining it is out of buffers, or other strange behaviour. + +
AssemblyApplesoft
+X:		WGExit
+
+&EXIT
+
+ +



diff --git a/ReadMe.md b/ReadMe.md index 7aec1bd..12ead5d 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -8,10 +8,6 @@ Known issues To Do: ------ -- Repainting a view while the mouse cursor is on it will cause artifacts when mouse moves -- Quitting sometimes leaves BASIC in inverted text mode -- Quitting with button highlighted leaves us in inverted text mode -- After initial run of basic demo, additional run fails with no buffers available - Make WGFillRect support 1 height and 1 width - If called in inverse mode, clear screen clears inverse - Fix unclosed PRE tags in documentation diff --git a/WeeGUI_MLI.s b/WeeGUI_MLI.s index 00b99ca..5e30a1c 100644 --- a/WeeGUI_MLI.s +++ b/WeeGUI_MLI.s @@ -63,3 +63,5 @@ WGScrollY = 58 WGScrollYBy = 60 WGEnableMouse = 62 WGDisableMouse = 64 +WGExit = 66 + diff --git a/applesoft.s b/applesoft.s index 0fb02ca..7936750 100644 --- a/applesoft.s +++ b/applesoft.s @@ -901,6 +901,16 @@ WGAmpersand_GETstore: rts +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; WGAmpersand_EXIT +; Shuts down WeeGUI +; &EXIT +WGAmpersand_EXIT: + jsr WGExit + jsr WGBottomCursor + rts + + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WGBottomCursor ; Leave the cursor state in a place that Applesoft is happy with @@ -1078,6 +1088,9 @@ WGAmpersandCommandTable: .byte TOKEN_GET,0,0,0,0,0 .addr WGAmpersand_GET +.byte "EXIT",0,0 +.addr WGAmpersand_EXIT + ;.byte TOKEN_GOSUB,0,0,0,0,0,0,0,0,0,0,0,0,0 ; For internal testing of the procedural gosub ;.addr WGAmpersand_GOSUB diff --git a/asmdemo.s b/asmdemo.s index adc9cb3..68f1c4b 100644 --- a/asmdemo.s +++ b/asmdemo.s @@ -159,6 +159,9 @@ keyLoop_focusOkay: keyLoop_quit: ldx #WGDisableMouse jsr WeeGUI + ldx #WGExit + jsr WeeGUI + rts testPaintContentsClick: diff --git a/weegui.dsk b/weegui.dsk index f3199cd32351c6baf48c70405e67a3523bef67fb..203f6b37ffb9ab77b11587729648f364fa450405 100644 GIT binary patch delta 4697 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 Zm03F(=TCW=7OzmqsuXpD#|IU^`5%;VV=w>! delta 4603 zcmahM3s6&6_9cOYAV@?hNpS2F)Dl-)wzXY~PN^tvu&JVeTDIDtWsJ4k?Y4FY-41yQ z4@lsq$$hjd9icSc*X22li@M`9-9_oR?0_wrT4^g=U94DXEBNq(fCzi;dkMz2vzy7> zbI-ZwbMHCl-g6$)6UFpIHP4UM4JoPQc=gm2>Y^elIbJvQa7Oe(#jpMqK|M6AoYhqDr+$cvrIHgT*-8o9;f5)jSHyQ0qWo5GVoUU!Y--E3TGrHv z57BBFtrCER%xH$O^$ zP|6y8-{NTa?Qa>zXt1`C^1)(1b{l=Yxbq5b&i7rx>HWR92_Wjl%yQ-h-(W4Fv>BV9 zYl1nUzOYyS+re6(JRPEJ@Li&FO0BPJN+(K9_H~Z!juJ7qnD7dZbW=Frdg_i!7E-r1|hWJTz z$rc;@EFGJe6IxxW+CZ(%jw7(yol?b|YH zS+p4xOxtYvm}_63&RLJBIi+&q&@=a`xTI(AkLWHEy16HwU6^pQNSP8Hx3cKFB2`Lk z97PQjJ-IXsUtx=-Q>`izHFcD-ubsI;tBy(=@IFDzD2e&sfZ-xAY$Qlx5J@J;*Fl6P z$d({7lOVPrGK(NDb2ec$_qUD7sfk6F*R8^YHyy~dj3~TI?jjRG+9S+ab9cEx&ufac z8T-3~_l2u#E$|k_a!D^enmT#Acy;&%;?*XFsIpw#%|~@80xHXS?x~ZnOnq^Wq-nok zVGWi=+$SefyuXW&EcB#WrgQY}1m(JN?jM~=c0yQL4!4(&G8$Jl34o9G^%_9Ux^m0$ zGG3j5zQMdE16{;IA#9vi>x-j+By0j?0ElY|QInxB))JOAL8=|#N#M#Qt7^i(I!GZ( zz+BLS+@C+uFCWD12i5i0r182m-oUo{o48>JH{6o&VQCz}4Wqc>Hf|V$?M0PYUfXk5 z5&m>W=)Ez1nyZ-0ZU1!f^tok{4_L$dnn{0d?|hU?Dl676+6}_YiJxP5T;H|_o}-{g zo(p88P2J2Pm#y9TfSO4bPbT$z5!$Qq@)1j8i^w^TM6MU;UpwU7yr_ENpZ z=GdU6UfgFnSV6m&*pFVv6~+U-_(zMK6=Ajl5xiP7-D44MuD~gj*SO~XsfQJjMg@2E zyxM-jwLClTDT?ZItlx}jclO$) zdD&FE`y-%I%c$+{6*(5LaLQdv2$af`yNW1WNZ?Y6TI4|zeX-~1)de88@(4uMelG>4qv`nBw~m2NYIIz(a53iq0q44UpZQvUb5h2J9&V zT~>3UK(TYsA0weU%tf~&ecCsnU6>6$#x9!`GT}RXK#$+%{bv3{GyexO|C(87Hv7KE zY_9JI%&wuAp0%9*QaUsY#a#bsso(zQx^j3I+^wF6078arh{s;KzY=(+ivrygF@zTr;XShHu_yzaEI%jC7sho zf9S9ZeNg#StcG~ZAn*JCg-;5rmLXf%Mek*3G~x+HY&0~v9h%t3LbE%e$#`fo;Q<1G<&V=C*=Z_4$<#OHj)PUwN@i;cv&ov2*;U=!Ti6vdc|NmRr4i}Pl zTkUd}eO18Y$+y%?MbNUyspRm*0Rf`;@!VHUOWThPaROB~)^$Q#VO(d>JoO&v&l2GCYLY-Mrv_+4U|GaCKc-8t6?XcXXg;KklYDkV10EpEPiB)7BAS6^nBve7gb)(pK8Izg^ zl}et449d<_x~D)NrDcGTut0=?D{V6jlu6pan(74as5GZw zTqdq3UL=