From fd53a53a854efd3dad4381dd6e8980d7449eb3f7 Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Sat, 11 Oct 2014 16:12:15 -0700 Subject: [PATCH] - Implemented most of MLI - Code cleanup - GUIDEMO is now the demo for the MLI --- WeeGUI.xcodeproj/project.pbxproj | 2 + WeeGUI_MLI.s | 65 +++++++ gui.s | 32 +++- guidemo.dsk | Bin 143360 -> 143360 bytes guidemo.s | 308 ++++++++++++++++++------------- unit_test.s | 55 +++++- views.s | 2 +- 7 files changed, 324 insertions(+), 140 deletions(-) create mode 100644 WeeGUI_MLI.s diff --git a/WeeGUI.xcodeproj/project.pbxproj b/WeeGUI.xcodeproj/project.pbxproj index ddce831..e3ea2fc 100644 --- a/WeeGUI.xcodeproj/project.pbxproj +++ b/WeeGUI.xcodeproj/project.pbxproj @@ -22,6 +22,7 @@ 70F1DB4B19A56D6300321637 /* switches.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = switches.s; sourceTree = ""; }; 70F1DB5619A6B02900321637 /* painting.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = painting.s; sourceTree = ""; }; 70F1DB5D19A7FF8700321637 /* memory.s */ = {isa = PBXFileReference; lastKnownFileType = sourcecode.asm; path = memory.s; sourceTree = ""; }; + 70FB05F119DF5B0900573690 /* WeeGUI_MLI.s */ = {isa = PBXFileReference; fileEncoding = 4; lastKnownFileType = sourcecode.asm; path = WeeGUI_MLI.s; sourceTree = ""; }; /* End PBXFileReference section */ /* Begin PBXGroup section */ @@ -39,6 +40,7 @@ 70868EE019BD150C00E4B4CB /* rects.s */, 709E88E319AC0A5F0069DB55 /* views.s */, 70A3A2C219BFE2C3006A2EC4 /* applesoft.s */, + 70FB05F119DF5B0900573690 /* WeeGUI_MLI.s */, 70427F2219D648730031D960 /* mouse.s */, 70D435B219A013AF001BFD9B /* gui.s */, 709E88E419AC0DC20069DB55 /* unit_test.s */, diff --git a/WeeGUI_MLI.s b/WeeGUI_MLI.s new file mode 100644 index 0000000..8fcbd5b --- /dev/null +++ b/WeeGUI_MLI.s @@ -0,0 +1,65 @@ +; +; WeeGUI_MLI.s +; Machine Language API for WeeGUI +; +; Created by Quinn Dunki on 8/15/14. +; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved. +; + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Reserved zero page locations +; +PARAM0 = $06 +PARAM1 = $07 +PARAM2 = $08 +PARAM3 = $09 + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; WeeGUI entry point +; Set up your call, then do a JSR to this address. +; +WeeGUI = $4004 + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; API call names, to be passed to WeeGUI via X register +; e.g. +; ldx #WGDesktop +; jsr WeeGUI +; +WGClearScreen = 0 +WGDesktop = 2 +WGSetCursor = 4 +WGSetGlobalCursor = 6 +WGSyncGlobalCursor = 8 +WGPlot = 10 +WGPrint = 12 +WGFillRect = 14 +WGStrokeRect = 16 +WGFancyRect = 18 +WGPaintView = 20 +WGViewPaintAll = 22 +WGEraseView = 24 +WGEraseViewContents = 26 +WGCreateView = 28 +WGCreateCheckbox = 30 +WGCreateButton = 32 +WGViewSetTitle = 34 +WGViewSetAction = 36 +WGSelectView = 38 +WGViewFromPoint = 40 +WGViewFocus = 42 +WGViewUnfocus = 44 +WGViewFocusNext = 46 +WGViewFocusPrev = 48 +WGViewFocusAction = 50 +WGPendingViewAction = 52 +WGPendingView = 54 +WGScrollX = 56 +WGScrollXBy = 58 +WGScrollY = 60 +WGScrollYBy = 62 +WGEnableMouse = 64 +WGDisableMouse = 66 diff --git a/gui.s b/gui.s index 279bc03..4ee6793 100644 --- a/gui.s +++ b/gui.s @@ -40,9 +40,38 @@ WGDispatch: WGEntryPointTable: .addr WGClearScreen .addr WGDesktop -.addr WGPlot .addr WGSetCursor .addr WGSetGlobalCursor +.addr WGSyncGlobalCursor +.addr WGPlot +.addr WGPrint +.addr WGFillRect +.addr WGStrokeRect +.addr WGFancyRect +.addr WGPaintView +.addr WGViewPaintAll +.addr WGEraseView +.addr WGEraseViewContents +.addr WGCreateView +.addr WGCreateCheckbox +.addr WGCreateButton +.addr WGViewSetTitle +.addr WGViewSetAction +.addr WGSelectView +.addr WGViewFromPoint +.addr WGViewFocus +.addr WGViewUnfocus +.addr WGViewFocusNext +.addr WGViewFocusPrev +.addr WGViewFocusAction +.addr WGPendingViewAction +.addr WGPendingView +.addr WGScrollX +.addr WGScrollXBy +.addr WGScrollY +.addr WGScrollYBy +.addr WGEnableMouse +.addr WGDisableMouse ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; @@ -100,7 +129,6 @@ WG80: .include "views.s" .include "mouse.s" .include "applesoft.s" -;.include "unit_test.s" .include "memory.s" diff --git a/guidemo.dsk b/guidemo.dsk index 9b22f87c7f1b0d82cf4c216c05233a242840fa04..35b3b59132c529aca222cf04dee4a9768ffec273 100644 GIT binary patch delta 5026 zcmaJ_4R90J5q>AxC&~O+#u!U-!W>Qrc9XOYLmJm9ApgsjEDlKz6DLFDq_i@LZ6J_X z=10fRF^aICZBbwP-QwG?@fX2+ojXlum$4rldfA=)Sv? zY=;ny=l1Qs-F^GM-Fvss+=P*vFb-zvDRg{>zRkFBQ7x{ks%}_;v>&|+>CuE9Id3k6*e~0y<+(1#b+4+hb-lK< zp{s7JE?kpayR-I!^DAdg{lg7~^^ey-TYsV6Fof|>VIuR0MBA1f#-Yd( zc*f9(`3u23QXGn#8Uk{R1W=vU`U3=8nQpDj&t+MN(r=k$^{} zRX}_rUFOTD%o8Mcymh>3pbe)}R~&1_^_I0oe369K7W0HHrV?3T8nqrMa&0RIYclG* zPSPH=I-)j5Y&|~x3?96nIc(=`u?<+MwqXuGDg+zDh|F%r`)#pye0mce^u;#e(u?i5 z52(~>aIz%uC1 zllw@cAG|oUbhf-3$M6^0k`mb z@sXZ;LN-g%;s^bKvn zvWXe1W3JaGxsOTKK_y!WNSV7QN}mnl{R^Xpvz>VV{GlMW1h?Rm^!{8qXQ&gHt>Vf9 zmXMm*zESc6ow^$~VH57^>aqlbSa=$z^rPnwu4cpZ`Y*+ID1oE&w zl?Px+9=1>BVRD^-65Z(cF0>WbLwd$GVsl<3d*4PJ+o&P}5hV1dxQnrkAx*Fi7iY(H z``-o)NOD?lCpK}tJ25y>j^rkoDEV1>RyC68xL(fX8isb_Itr9k7hp03^IRf#Xg8Ki zgagi@U0CRGGOs(iLdeiwAMo<*5KqHAZ;&XEa9Kn*6DGJM$!hE=Tyi@UFhs-@)-x_A zv)j%*UeEk#1qhW7PQVX3q&QRPL#}y}>pfTtctb^iHwAcOfHwqqnh1prn3PC6h7w>x z;RY@74zf3EdT%>%acJsh0>UkkA(4XZ{9D>Ws2kP#x@n1NYh0S1A##vRk!UFzhh+c| zKs%ip2mlbcWeC!8ezC+v(1*6cSxj~LrB-~Y9VcDJI)*E6d1DLSV;gA4-pc=9DrgF&-5;E2XS)r7!8u7M3JX5(kV~q(KP-$ zMr2Mi)JV!@>rFGNXG#D4UZ;DT&Jo`##_9_ir6GZdewV#Q+;ONN)YMbtT2e#W0i(@U z-zNcoJ^7(Ep$7$5tU5}UDd%+=uS;?O@%^y@Nl7+JZupg4jV<| zA+u#cC7{Kf`YsoOTaSBrK57B&hWA;N;%3A%Bi?_NKREj-^?+>+ZO0`~a07MtZm&|==$Uj&h5bRd*I?-rT#eqhNt8H z{Tam}PFK7faz>7pwAb6@lf>;GxU-J&-Bu;Mvi>xf%}3V0OzEh+?Hw7=0i~bA9U0Ik zh#&M=LTj#OZoir_d^H2QhT#r_Fppgwo5vP&^1NbuVoq!>%hRzumNzgDH{i7p>#Kp)2Gv_U?4w{a2K614hA6n;=P3Ht(!Ze!X zJ|7l*a(2MxfUdKDVnQwmBkuix4YcL5*jwjb{?HQEY9(+Sk7zxk$ zB&uiEsPr6p_szxt+DzV4wL9ctfm4E{Jlu%cIX>s|P5tey}bugnqLO{>30p=5! z+Trp`Nx1Fmd4sFUNA3)Zd~gHh7yC(TqM7luVn^OGV$bqMjha+y;)ugermKQjt4n>4 zP3Q~@UwTFLdaXjblx3OHhDm$)5U9@KTcHlrpsUL#brgx5!6X~}OtqWznrHE zHr2~YoOK)S-A20a$#6(73}rz2VFJUmD!HH%=#W!kg|xUXvE;uaV8VRmR8YH?7F=+G z=bMoP)m$}~^H&mE1%SR|G&IdUG_;I?9$GU}Gp!{$!PC(pXygkS$qvVf_*VFyQ1p)< z(Pc;JUmN_)WxEoubqca+uuPnAE41EWg|-xaDrO*ApOQ>RE?mPvj;DZC%cht3_5y%> ht8Xv3o`QVtt&kU)A**<4Y>s&O{M$PRj}B7Y{{itV!zBO! delta 4566 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 Obu&l4H-2JV$Nvv~dC^S( diff --git a/guidemo.s b/guidemo.s index 8e1248d..c8ac322 100644 --- a/guidemo.s +++ b/guidemo.s @@ -1,52 +1,201 @@ ; ; guidemo.s -; AssemblyTest +; WeeGUI sample application ; ; Created by Quinn Dunki on 8/15/14. ; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved. ; +.include "WeeGUI_MLI.s" + + .org $6000 -; Reserved locations -PARAM0 = $06 -PARAM1 = $07 -PARAM2 = $08 -PARAM3 = $09 +INBUF = $0200 +DOSCMD = $be03 +KBD = $c000 +KBDSTRB = $c010 -; WeeGUI entry points -WeeGUI = $4004 - -WGClearScreen = 0 -WGDesktop = 2 -WGPlot = 4 -WGSetCursor = 6 -WGSetGlobalCursor = 8 +.macro WGCALL16 func,addr + lda #addr + sta PARAM1 + ldx #func + jsr WeeGUI +.endmacro ; Sample code main: + + ; BLOAD the GUI library + ldx #0 + ldy #0 +@0: lda bloadCmdLine,x + beq @1 + sta INBUF,y + inx + iny + bra @0 +@1: jsr DOSCMD + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +; Show off some WeeGUI features + + ldx #WGClearScreen jsr WeeGUI ldx #WGDesktop jsr WeeGUI - lda #40 - sta PARAM0 - lda #12 - sta PARAM1 - ldx #WGSetGlobalCursor + WGCALL16 WGCreateView,testView + WGCALL16 WGViewSetTitle,testTitle0 + WGCALL16 WGCreateCheckbox,testCheck + WGCALL16 WGCreateButton,testButton1 + WGCALL16 WGCreateButton,testButton2 + + ldx #WGViewPaintAll jsr WeeGUI - lda #'Q'+$80 - ldx #WGPlot + lda #0 + ldx #WGSelectView jsr WeeGUI + ldx #WGEnableMouse + jsr WeeGUI + +keyLoop: + ldx #WGPendingViewAction + jsr WeeGUI + + lda KBD + bpl keyLoop + sta KBDSTRB + + and #%01111111 + cmp #9 + beq keyLoop_focusNext + cmp #27 + beq keyLoop_focusPrev + cmp #13 + beq keyLoop_toggle + cmp #32 + beq keyLoop_toggle + cmp #'o' + beq keyLoop_focusOkay + cmp #8 + beq keyLoop_leftArrow + cmp #21 + beq keyLoop_rightArrow + cmp #11 + beq keyLoop_upArrow + cmp #10 + beq keyLoop_downArrow + cmp #113 + beq keyLoop_quit + + jmp keyLoop + +keyLoop_focusNext: + ldx #WGViewFocusNext + jsr WeeGUI + jmp keyLoop + +keyLoop_focusPrev: + ldx #WGViewFocusPrev + jsr WeeGUI + jmp keyLoop + +keyLoop_toggle: + ldx #WGViewFocusAction + jsr WeeGUI + jmp keyLoop + +keyLoop_leftArrow: + lda #1 + ldx #WGScrollXBy + jsr WeeGUI + jsr testPaintContents + jmp keyLoop + +keyLoop_rightArrow: + lda #-1 + ldx #WGScrollXBy + jsr WeeGUI + jsr testPaintContents + jmp keyLoop + +keyLoop_upArrow: + lda #1 + ldx #WGScrollYBy + jsr WeeGUI + jsr testPaintContents + jmp keyLoop + +keyLoop_downArrow: + lda #-1 + ldx #WGScrollYBy + jsr WeeGUI + jsr testPaintContents + jmp keyLoop + +keyLoop_focusOkay: + lda #2 + ldx #WGSelectView + jsr WeeGUI + ldx #WGViewFocus + jsr WeeGUI + jmp keyLoop + +keyLoop_quit: + ldx #WGDisableMouse + jsr WeeGUI rts +testPaintContents: + lda #0 + ldx #WGSelectView + jsr WeeGUI + ldx #WGEraseViewContents + jsr WeeGUI + + ldy #0 +testPaintContents_loop: + ldx #0 + stx PARAM0 + sty PARAM1 + ldx #WGSetCursor + jsr WeeGUI + + tya + clc + adc #'A' + sta testStr3 + + WGCALL16 WGPrint,testStr3 + + iny + cpy #25 + bne testPaintContents_loop + +testPaintContents_done: + rts + + + +testCallback: + jsr $ff3a ; boop! + rts + + + +;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; + .if 0 ;jmp tortureTestPrint ;jmp tortureTestRects @@ -78,90 +227,6 @@ main: jsr WGEnableMouse -keyLoop: - jsr WGPendingViewAction - - lda KBD - bpl keyLoop - sta KBDSTRB - - and #%01111111 - cmp #9 - beq keyLoop_focusNext - cmp #27 - beq keyLoop_focusPrev - cmp #13 - beq keyLoop_toggle - cmp #32 - beq keyLoop_toggle - cmp #'o' - beq keyLoop_focusOkay - cmp #8 - beq keyLoop_leftArrow - cmp #21 - beq keyLoop_rightArrow - cmp #11 - beq keyLoop_upArrow - cmp #10 - beq keyLoop_downArrow - cmp #113 - beq keyLoop_quit - - jmp keyLoop - -keyLoop_focusNext: - jsr WGViewFocusNext - jmp keyLoop - -keyLoop_focusPrev: - jsr WGViewFocusPrev - jmp keyLoop - -keyLoop_toggle: - jsr WGViewFocusAction - jmp keyLoop - -keyLoop_leftArrow: - lda #1 - jsr WGScrollXBy - jsr testPaintContents - jmp keyLoop - -keyLoop_rightArrow: - lda #-1 - jsr WGScrollXBy - jsr testPaintContents - jmp keyLoop - -keyLoop_upArrow: - lda #1 - jsr WGScrollYBy - jsr testPaintContents - jmp keyLoop - -keyLoop_downArrow: - lda #-1 - jsr WGScrollYBy - jsr testPaintContents - jmp keyLoop - -keyLoop_focusOkay: - lda #2 - jsr WGSelectView - jsr WGViewFocus - jmp keyLoop - -keyLoop_quit: - jsr WGDisableMouse - rts ; This seems to work for returning to BASIC.SYSTEM, but I don't know if it's right - -testPaintContents: - SAVE_AXY - - lda #0 - jsr WGSelectView - jsr WGEraseViewContents - ;; jsr WGNormal @@ -176,38 +241,19 @@ testPaintContents: ;; - ldy #0 -testPaintContents_loop: - ldx #0 - stx PARAM0 - sty PARAM1 - jsr WGSetCursor - - tya - clc - adc #'A' - sta testStr3 - - CALL16 WGPrint,testStr3 - - iny - cpy #25 - bne testPaintContents_loop - -testPaintContents_done: - RESTORE_AXY - rts - testCallback: jsr $ff3a rts rts - +.endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +bloadCmdLine: + .byte "BRUN gui",$8d,0 + testView: .byte 0,1,7,3,62,18,62,40 @@ -242,10 +288,14 @@ testTitle2: testTitle3: .byte "More Magic",0 -.endif + ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; +.include "unit_test.s" + + + ; Suppress some linker warnings - Must be the last thing in the file .SEGMENT "ZPSAVE" .SEGMENT "EXEHDR" diff --git a/unit_test.s b/unit_test.s index d070dc6..9c9d585 100644 --- a/unit_test.s +++ b/unit_test.s @@ -8,7 +8,7 @@ ; Copyright (c) 2014 One Girl, One Laptop Productions. All rights reserved. ; - +.if 0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; tortureTestPrint ; Prints strings in a range of positions and scrolling offsets @@ -126,6 +126,7 @@ tortureTestPrint_reset: tortureTestPrint_lock: jmp tortureTestPrint_lock +.endif ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; tortureTestRects @@ -137,7 +138,8 @@ tortureTestPrint_lock: ; Curr Width ; Curr Height tortureTestRects: - jsr WGClearScreen + ldx #WGClearScreen + jsr WeeGUI tortureTestRectsEven: @@ -151,7 +153,11 @@ tortureTestRectsEven: pha tortureTestRectsEvenLoop: - jsr WGClearScreen +@0: lda $C019 ; Sync to VBL + bmi @0 + + ldx #WGClearScreen + jsr WeeGUI tsx inx @@ -189,8 +195,10 @@ tortureTestRectsEvenLoop: sta $0100,x ldy #'Q'+$80 - jsr WGFillRect - jsr WGStrokeRect + ldx #WGFillRect + jsr WeeGUI + ldx #WGStrokeRect + jsr WeeGUI jsr delayShort jsr delayShort @@ -216,7 +224,8 @@ tortureTestRectsOdd: pha tortureTestRectsOddLoop: - jsr WGClearScreen + ldx #WGClearScreen + jsr WeeGUI tsx inx @@ -254,8 +263,10 @@ tortureTestRectsOddLoop: sta $0100,x ldy #'Q'+$80 - jsr WGFillRect - jsr WGStrokeRect + ldx #WGFillRect + jsr WeeGUI + ldx #WGStrokeRect + jsr WeeGUI jsr delayShort jsr delayShort @@ -273,6 +284,34 @@ tortureTestRectsOddDone: +delayShort: + 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 + + + testPrintView: .byte "000F061E0A287E" ; 0, 7,3,62,19,75,126 diff --git a/views.s b/views.s index 0b9ea7e..c46e97b 100644 --- a/views.s +++ b/views.s @@ -873,7 +873,7 @@ WGViewFocusAction_knownRTS: ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WGPendingViewAction ; Performs the action of the pending view, if any -; OUT V : Set if the caller should perform an Applesoft GOSUB +; Global flag set if the caller should perform an Applesoft GOSUB ; Side effects: Changes selected view, Repaints some views ; WGPendingViewAction: