From ed9d9fdeb571c8d1c249c72aa3b0ef04050194c0 Mon Sep 17 00:00:00 2001 From: Dennis Ranke Date: Fri, 31 Dec 2021 23:09:49 +0100 Subject: [PATCH] implement more control codes --- examples/curlywas/control.cwa | 6 ++++- platform/bin/platform.uw8 | Bin 2631 -> 2701 bytes platform/src/platform.cwa | 45 ++++++++++++++++++++++++++++++++-- 3 files changed, 48 insertions(+), 3 deletions(-) diff --git a/examples/curlywas/control.cwa b/examples/curlywas/control.cwa index 0cdaffb..0ee05fa 100644 --- a/examples/curlywas/control.cwa +++ b/examples/curlywas/control.cwa @@ -6,7 +6,11 @@ export fn upd() { } data 0x20000 { - i8(14, 0xfd, 12) // clear screen to color 0xfd + i8(14, 0xfd, 15, 15, 12) // clear screen to color 0xfd "Top left" + i8(31, 28, 29) "Bottom right" + i8(31, 1, 2, 14, 10, 15, 0xf0) "Other colors" + i8(24)" inverted" + i8(5, 31, 6, 28, 15, 0xe5) "warning!" i8(0) } diff --git a/platform/bin/platform.uw8 b/platform/bin/platform.uw8 index d245d777af918085e590dc6e90c61ba47227d4c1..7c8c182dc142054d9706f26291e80733f9a57995 100644 GIT binary patch literal 2701 zcmV;83Uc)V4u6>^c5|Aoq-!V;;a#6?bLBN~;W7FN5yg<^M>h(T0fdpRwb$KSdW>)z8FAmgG9I!&Li4vYYIdYqoRU z(IUhx=gQ|mf8;Ui&Tp{LQ5Id>xj#h;`dT)`>fFk}q3<1+CxAE)_a+^CQIUp@R6Z`( zos7i+zK+f35^&@GB0EsFE(R`CGo8tTt|4xdc3^Ihh2^ldk5k#+*SBU-mW9Qde`IRa zj_8xjnN*qQ%sC-J)0M%g?O^@1HOe;f(M=47y%A>*ZsF9p2hmv7fqhr(JF0P?}Zqi|hIESv^yv`4Luma_dR6NGQBp?^XJ2t)zI0PD~?V z)9*3?FBKhwz9q{r_7 zMv@}qZwp;K(LAlDNrhxqgC2<3C|~x?M!etRopRu8W7tLRMJ}&_&6D+G6w3^dnZ&!A zP%T8cDOUei*QLs@Ip;S?BwInso=gbT8Zm06#>{r3oUgH8RTshqiVp^jLK-en;VDgwK>MN#VgXFv(l>1knVfG53Va@PPW(?=zxm{P!2YB_IeMq}Zk^ z`D-^_usyTB;9l_~fp$(ld8||7f||UuePR4{BA5QhAxGm(tij&_@gj0bH zK5?%xvp=EwwEhSH;nnJB@ox^LL%gj?rnK3fQM5E^TRFV4pSisbr zl=*ZlF`rIwBQIw!fVziRJ--h?FqtI+`#vY-c@jWeIXdx?B*}4oMiK)a!K`ZSfX!?x zf6S3bWY&V>(1E;j8N4(bmhVhe_7<2D97&me)-gE5<)JxYi5Jt+GTsg5lHHsGJ+7EHyXmlBzPja z;OvGBbIqmeT>diGZzI<56EE{t@2P-w!qZS?+uVS;&tdu4d;09?!Gli92`;K+?AA6{ zP1OPe;+NdB=4jW#wjBij2jINe z(Jl=yD&+(|URG|R6;W(utqOx$;poMUBm5FFvI?$5D zoQA8D00jdwlI#?JM8C-kgbytrRI32vQxDmQDHSk-7uQ%56k$**cqlgbDKg=ie z4H#B0T{W0=`;d+GZ*3i*oN?%_e?T_QWvgPaFNyioGTq42{0?9qpJ=S}ODDR_j z`#N6t^kjQ&*yTlLSw-afTQgX77dLk3APGJ%X}5aMYg-(*(Q6bZxx$z1s_@OSK0}(m zOW;6g$ZEv~=Amo0po34MdT+dk0=ynzp(vr(KzNUld=i}_$97+ZspR^78s=Y??kmV! zFG9?kBOWIc2`(iR3Q$Sh?-^v&bVdUp9I`)$D<#yfGW5g&xd^b`E7eobKEbxk^ZbP= z4?gibUKr(ggD+(M8FvjaU83Od%c_|k5axU339$4f*}@_ig_eLok91W3Ol<$4;S@DY z9~s|InR4#h8tyC&!&IpKCqOOei$DmAwmmH(MnsBmPyD~&V5&*kjl@RsjhD7;?&%0j zSb6Rf?k&-kA6+T{p7|Ze`J7!|mG02$ijAbGoAZ0M8N~n&OG@jd`-~^XEH%ezWTzAmPYD1wnig8ijK*e?YrMraZsZY3J9f)tR+&O^+ zoI3TB$*O%ja45aU00j2E#?kcH;fzMPV z%(A$3@ZKc;L+se}YF`?n1eo^Yc!Lq(g7AlBivo}n`6T=gVHT}PqJu}1flncF%4o>xrYby1ydE@d6@ z`xYwt?;JznHR6`!ecRFKBh!0#28o-r$$spm>!B0E1wQq}^>fG!@uF&T{Lb>o+3Ust zwJLI09Znd_hWj^TR4+2K_Kfw_@*a6ueI{}9*b+u7ow$#<7*DFg@8!Y@y#0T6a@QWz+HH*T2Y3uGT!KeS zpw<5tD@+iBPtn?Oi9*@M<}V)9pNhiPk@o)(%H(jZE2ri-ESI~zV?TD>79;uJfbc*Z16Bex zqW$suWXv@j_khizY+ea|U@;KYXbUGgzR+rsPdN4f=%jMXO(~A>2N!$}ZtM(Rp>Ce< z3F7_t1-y)cfW-vo9#O>f*aD H)0{Rs3|nTI literal 2631 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 diff --git a/platform/src/platform.cwa b/platform/src/platform.cwa index 53ca1d1..b704a1b 100644 --- a/platform/src/platform.cwa +++ b/platform/src/platform.cwa @@ -331,6 +331,20 @@ fn printSingleChar(char: i32) { return; } + if char == 8 { + textCursorX = textCursorX - 8; + if !graphicsText & textCursorX < 0 { + textCursorX = 320-8; + printSingleChar(11); + } + return; + } + + if char == 9 { + textCursorX = textCursorX + 8; + return; + } + if char == 10 { textCursorY = textCursorY + 8; if !graphicsText & textCursorY >= 240 { @@ -345,6 +359,20 @@ fn printSingleChar(char: i32) { return; } + if char == 11 { + textCursorY = textCursorY - 8; + if !graphicsText & textCursorY < 0 { + textCursorY = 0; + let i = 320 * (240 - 8); + loop scroll_copy { + i!(116 + 320 * 8) = i!116; + branch_if (i := i - 4): scroll_copy; + } + rectangle(0 as f32, 0 as f32, 320 as f32, 8 as f32, bgColor); + } + return; + } + if char == 12 { cls(bgColor); return; @@ -365,6 +393,19 @@ fn printSingleChar(char: i32) { return; } + if char == 24 { + let tmp = textColor; + textColor = bgColor; + bgColor = tmp; + return; + } + + if char == 31 { + textCursorX = 0x12d20?1 * (8 - graphicsText * 6); + textCursorY = 0x12d20?2 * (8 - graphicsText * 7); + return; + } + drawChar(char); } @@ -373,11 +414,11 @@ data(0x12d00) { 1, 2, 1, 1, // 0-3 1, 1, 1, 1, // 4-7 1, 1, 1, 1, // 8-11 - 1, 1, 2, 1, // 12-15, + 1, 1, 2, 2, // 12-15, 1, 1, 1, 1, // 16-19, 1, 1, 1, 1, // 20-23, 1, 1, 1, 1, // 24-27, - 1, 1, 1, 1 // 28-31 + 1, 1, 1, 3 // 28-31 ) }