From 36e4157db70d6f79b3466730fea2bf6ce6d38474 Mon Sep 17 00:00:00 2001 From: Quinn Dunki Date: Tue, 3 Feb 2015 16:16:05 -0800 Subject: [PATCH] Added support for raw characters to WGPrint - Updated Applesoft sample code --- Documentation.md | 5 +++++ ReadMe.md | 1 - applesoft.s | 22 ++++++++++++++++++++++ painting.s | 14 +++++++++++++- weegui.dsk | Bin 143360 -> 143360 bytes 5 files changed, 40 insertions(+), 2 deletions(-) diff --git a/Documentation.md b/Documentation.md index 0197403..7cafeb4 100644 --- a/Documentation.md +++ b/Documentation.md @@ -812,8 +812,13 @@ Prints a string into the current view, at the *local* cursor position. The text X: WGPrint PARAM0: Pointer to null-terminated string (LSB) PARAM1: Pointer to null-terminated string (MSB) +Overflow: If set, characters are printed raw, with no high bit manipulation. Only works in NORMAL mode.
 &PRINT("string")
+
+or
+
+&PRINT(raw_character)
 
diff --git a/ReadMe.md b/ReadMe.md index 814d5d7..bb888a8 100644 --- a/ReadMe.md +++ b/ReadMe.md @@ -8,7 +8,6 @@ Known issues To Do: ------ -- Clicking on scroll arrows in basicdemo messes up title rendering - Write sample code - Update side effects in assembly API - Support for frameless views diff --git a/applesoft.s b/applesoft.s index cfe3caa..027181e 100644 --- a/applesoft.s +++ b/applesoft.s @@ -611,6 +611,10 @@ WGAmpersand_CURSR: WGAmpersand_PRINT: jsr WGAmpersandBeginArguments + jsr CHRGOT ; Experimental alternate parameter support + cmp #'"' + bne WGAmpersand_PRINTint + jsr WGAmpersandTempStrArgument stx PARAM0 sty PARAM1 @@ -637,6 +641,24 @@ WGAmpersand_PRINT: rts +WGAmpersand_PRINTint: + ; User passed a non-string, so interpret as an ASCII code + jsr WGAmpersandIntArgument + sta WGAmpersand_PRINTintBuffer + jsr WGAmpersandEndArguments + + lda #WGAmpersand_PRINTintBuffer + sta PARAM1 + bit WGAmpersand_PRINTrts ; Set overflow + jsr WGPrint + +WGAmpersand_PRINTrts: + rts + +WGAmpersand_PRINTintBuffer: + .byte 0,0 ;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;; ; WGAmpersand_SCR diff --git a/painting.s b/painting.s index d317398..dcf329e 100644 --- a/painting.s +++ b/painting.s @@ -130,12 +130,22 @@ WGPlot_done: ; cursor position. Clips to current view. ; PARAM0: String pointer, LSB ; PARAM1: String pointer, MSB +; V: If set, characters are printed raw with no high bit alterations ; Side effects: Clobbers SA,BASL,BASH ; WGPrint: SAVE_AXY SAVE_ZPS + lda #%10000000 + bvc WGPrint_setupMask + lda #0 + clv + +WGPrint_setupMask: + sta WGPrint_specialMask + + ; Start checking clipping boundaries lda WG_LOCALCURSORY cmp WG_VIEWCLIP+3 bcs WGPrint_leapDone ; Entire string is below the clip box @@ -220,7 +230,7 @@ WGPrint_visibleChars: WGPrint_charLoopNormal: lda (PARAM0),y ; Draw current character beq WGPrint_done - ora #%10000000 + ora WGPrint_specialMask jsr WGPlot iny @@ -286,3 +296,5 @@ WGPrint_charLoopInversePlot: beq WGPrint_endVisible bra WGPrint_charLoopInverse +WGPrint_specialMask: + .byte 0 diff --git a/weegui.dsk b/weegui.dsk index f2618581e5b303c60318cf528fabbc008a12b0e1..f67fd171fbaaeea6a9907bd0a4f8d6a1ac0accc4 100644 GIT binary patch delta 5401 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 delta 5385 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