From 9cbd4199f376fdccbf08bf2ac15b48c4310e36c4 Mon Sep 17 00:00:00 2001 From: Kartik Agaram Date: Wed, 29 Jul 2020 22:04:13 -0700 Subject: 6685 --- html/304screen.subx.html | 445 +++++++++++++++++++++++------------------------ 1 file changed, 221 insertions(+), 224 deletions(-) (limited to 'html/304screen.subx.html') diff --git a/html/304screen.subx.html b/html/304screen.subx.html index 28e957ef..4458863e 100644 --- a/html/304screen.subx.html +++ b/html/304screen.subx.html @@ -69,7 +69,7 @@ if ('onhashchange' in window) { 11 (flush Stdout) 12 (flush Stderr) 13 # switch to second screen buffer - 14 (write 2 Esc) + 14 (write 2 Esc) 15 (write 2 "[?1049h") 16 # 17 (clear-screen) @@ -84,7 +84,7 @@ if ('onhashchange' in window) { 26 55/push-ebp 27 89/<- %ebp 4/r32/esp 28 # switch to first screen buffer - 29 (write 2 Esc) + 29 (write 2 Esc) 30 (write 2 "[?1049l") 31 $enable-screen-type-mode:end: 32 # . epilogue @@ -102,7 +102,7 @@ if ('onhashchange' in window) { 44 56/push-esi 45 57/push-edi 46 # - 47 (_maybe-open-terminal) + 47 (_maybe-open-terminal) 48 # var window-size-info/esi: (addr winsize) 49 # winsize is a type from the Linux kernel. We don't care how large it is. 50 81 5/subop/subtract %esp 0x40/imm32 @@ -110,7 +110,7 @@ if ('onhashchange' in window) { 52 # ioctl(*Terminal-file-descriptor, TIOCGWINSZ, window-size-info) 53 89/<- %edx 6/r32/esi 54 b9/copy-to-ecx 0x5413/imm32/TIOCGWINSZ - 55 8b/-> *Terminal-file-descriptor 3/r32/ebx + 55 8b/-> *Terminal-file-descriptor 3/r32/ebx 56 e8/call syscall_ioctl/disp32 57 # some bitworking to extract 2 16-bit shorts 58 8b/-> *esi 0/r32/eax @@ -135,9 +135,9 @@ if ('onhashchange' in window) { 77 55/push-ebp 78 89/<- %ebp 4/r32/esp 79 # - 80 (write 2 Esc) + 80 (write 2 Esc) 81 (write 2 "[H") - 82 (write 2 Esc) + 82 (write 2 Esc) 83 (write 2 "[2J") 84 $clear-screen:end: 85 # . epilogue @@ -159,7 +159,7 @@ if ('onhashchange' in window) { 101 68/push 0/imm32/write 102 89/<- %ecx 4/r32/esp 103 # construct directive in buf -104 (write %ecx Esc) +104 (write %ecx Esc) 105 (write %ecx "[") 106 (write-int32-decimal %ecx *(ebp+8)) 107 (write %ecx ";") @@ -177,224 +177,221 @@ if ('onhashchange' in window) { 119 5d/pop-to-ebp 120 c3/return 121 -122 # just because Mu has no support for global variables yet -123 print-string-to-screen: # s: (addr array byte) -124 # . prologue -125 55/push-ebp -126 89/<- %ebp 4/r32/esp -127 # -128 (write 2 *(ebp+8)) -129 $print-string-to-screen:end: -130 # . epilogue -131 89/<- %esp 5/r32/ebp -132 5d/pop-to-ebp -133 c3/return -134 -135 # just because Mu has no support for global variables yet -136 print-byte-to-screen: # c: byte -137 # . prologue -138 55/push-ebp -139 89/<- %ebp 4/r32/esp -140 # . save registers -141 51/push-ecx -142 # var s/ecx: (addr array byte) -143 ff 6/subop/push *(ebp+8) -144 68/push 4/imm32/size -145 89/<- %ecx 4/r32/esp -146 (write 2 %ecx) -147 $print-byte-to-screen:end: -148 # . reclaim locals -149 81 0/subop/add %esp 8/imm32 -150 # . restore registers -151 59/pop-to-ecx -152 # . epilogue -153 89/<- %esp 5/r32/ebp -154 5d/pop-to-ebp -155 c3/return -156 -157 # just because Mu has no support for global variables yet -158 print-int32-hex-to-screen: # n: int -159 # . prologue -160 55/push-ebp -161 89/<- %ebp 4/r32/esp -162 # -163 (write-int32-hex-buffered Stdout *(ebp+8)) -164 (flush Stdout) -165 $print-int32-hex-to-screen:end: -166 # . epilogue -167 89/<- %esp 5/r32/ebp -168 5d/pop-to-ebp -169 c3/return -170 -171 reset-formatting-on-screen: -172 # . prologue -173 55/push-ebp -174 89/<- %ebp 4/r32/esp -175 # -176 (write 2 Esc) -177 (write 2 "(B") -178 (write 2 Esc) -179 (write 2 "[m") -180 $reset-formatting-on-screen:end: -181 # . epilogue -182 89/<- %esp 5/r32/ebp -183 5d/pop-to-ebp -184 c3/return -185 -186 start-color-on-screen: # fg: int, bg: int -187 # . prologue -188 55/push-ebp -189 89/<- %ebp 4/r32/esp -190 # . save registers -191 51/push-ecx -192 # var buf/ecx: (stream byte 32) -193 81 5/subop/subtract %esp 0x20/imm32 -194 68/push 0x20/imm32/size -195 68/push 0/imm32/read -196 68/push 0/imm32/write -197 89/<- %ecx 4/r32/esp -198 # construct directive in buf -199 # . set fg -200 (write %ecx Esc) -201 (write %ecx "[38;5;") -202 (write-int32-decimal %ecx *(ebp+8)) -203 (write %ecx "m") -204 # . set bg -205 (write %ecx Esc) -206 (write %ecx "[48;5;") -207 (write-int32-decimal %ecx *(ebp+0xc)) -208 (write %ecx "m") -209 # flush -210 (write-stream 2 %ecx) -211 $start-color-on-screen:end: -212 # . reclaim locals -213 81 0/subop/add %esp 0x2c/imm32 -214 # . restore registers -215 59/pop-to-ecx -216 # . epilogue -217 89/<- %esp 5/r32/ebp -218 5d/pop-to-ebp -219 c3/return -220 -221 start-bold-on-screen: -222 # . prologue -223 55/push-ebp -224 89/<- %ebp 4/r32/esp -225 # -226 (write 2 Esc) -227 (write 2 "[1m") -228 $start-bold-on-screen:end: -229 # . epilogue -230 89/<- %esp 5/r32/ebp -231 5d/pop-to-ebp -232 c3/return -233 -234 start-underline-on-screen: -235 # . prologue -236 55/push-ebp -237 89/<- %ebp 4/r32/esp -238 # -239 (write 2 Esc) -240 (write 2 "[4m") -241 $start-underline-on-screen:end: -242 # . epilogue -243 89/<- %esp 5/r32/ebp -244 5d/pop-to-ebp -245 c3/return -246 -247 start-reverse-video-on-screen: -248 # . prologue -249 55/push-ebp -250 89/<- %ebp 4/r32/esp -251 # -252 (write 2 Esc) -253 (write 2 "[7m") -254 $start-reverse-video-on-screen:end: -255 # . epilogue -256 89/<- %esp 5/r32/ebp -257 5d/pop-to-ebp -258 c3/return -259 -260 # might require enabling blinking in your terminal program -261 start-blinking-on-screen: -262 # . prologue -263 55/push-ebp -264 89/<- %ebp 4/r32/esp -265 # -266 (write 2 Esc) -267 (write 2 "[5m") -268 $start-blinking-on-screen:end: -269 # . epilogue -270 89/<- %esp 5/r32/ebp -271 5d/pop-to-ebp -272 c3/return -273 -274 hide-cursor-on-screen: -275 # . prologue -276 55/push-ebp -277 89/<- %ebp 4/r32/esp -278 # -279 (write 2 Esc) -280 (write 2 "[?25l") -281 $hide-cursor-on-screen:end: -282 # . epilogue -283 89/<- %esp 5/r32/ebp -284 5d/pop-to-ebp -285 c3/return -286 -287 show-cursor-on-screen: -288 # . prologue -289 55/push-ebp -290 89/<- %ebp 4/r32/esp -291 # -292 (write 2 Esc) -293 (write 2 "[?12l") -294 (write 2 Esc) -295 (write 2 "[?25h") -296 $show-cursor-on-screen:end: -297 # . epilogue -298 89/<- %esp 5/r32/ebp -299 5d/pop-to-ebp -300 c3/return -301 -302 # This is a low-level detail; I don't think everything should be a file. -303 # -304 # Open "/dev/tty" if necessary and cache its file descriptor in Terminal-file-descriptor -305 # where later primitives can use it. -306 _maybe-open-terminal: -307 81 7/subop/compare *Terminal-file-descriptor -1/imm32 -308 75/jump-if-!= $_maybe-open-terminal:epilogue/disp8 -309 # . save registers -310 50/push-eax -311 51/push-ecx -312 53/push-ebx -313 # open("/dev/tty", O_RDWR) -314 bb/copy-to-ebx Terminal-filename/imm32 -315 b9/copy-to-ecx 2/imm32/O_RDWR -316 e8/call syscall_open/disp32 -317 89/<- *Terminal-file-descriptor 0/r32/eax -318 $_maybe-open-terminal:end: -319 # . restore registers -320 5b/pop-to-ebx -321 59/pop-to-ecx -322 58/pop-to-eax -323 $_maybe-open-terminal:epilogue: -324 c3/return -325 -326 == data +122 print-string-to-screen: # s: (addr array byte) +123 # . prologue +124 55/push-ebp +125 89/<- %ebp 4/r32/esp +126 # +127 (write 2 *(ebp+8)) +128 $print-string-to-screen:end: +129 # . epilogue +130 89/<- %esp 5/r32/ebp +131 5d/pop-to-ebp +132 c3/return +133 +134 print-byte-to-screen: # c: byte +135 # . prologue +136 55/push-ebp +137 89/<- %ebp 4/r32/esp +138 # . save registers +139 51/push-ecx +140 # var s/ecx: (addr array byte) +141 ff 6/subop/push *(ebp+8) +142 68/push 4/imm32/size +143 89/<- %ecx 4/r32/esp +144 (write 2 %ecx) +145 $print-byte-to-screen:end: +146 # . reclaim locals +147 81 0/subop/add %esp 8/imm32 +148 # . restore registers +149 59/pop-to-ecx +150 # . epilogue +151 89/<- %esp 5/r32/ebp +152 5d/pop-to-ebp +153 c3/return +154 +155 print-int32-hex-to-screen: # n: int +156 # . prologue +157 55/push-ebp +158 89/<- %ebp 4/r32/esp +159 # +160 (write-int32-hex-buffered Stdout *(ebp+8)) +161 (flush Stdout) +162 $print-int32-hex-to-screen:end: +163 # . epilogue +164 89/<- %esp 5/r32/ebp +165 5d/pop-to-ebp +166 c3/return +167 +168 reset-formatting-on-screen: +169 # . prologue +170 55/push-ebp +171 89/<- %ebp 4/r32/esp +172 # +173 (write 2 Esc) +174 (write 2 "(B") +175 (write 2 Esc) +176 (write 2 "[m") +177 $reset-formatting-on-screen:end: +178 # . epilogue +179 89/<- %esp 5/r32/ebp +180 5d/pop-to-ebp +181 c3/return +182 +183 start-color-on-screen: # fg: int, bg: int +184 # . prologue +185 55/push-ebp +186 89/<- %ebp 4/r32/esp +187 # . save registers +188 51/push-ecx +189 # var buf/ecx: (stream byte 32) +190 81 5/subop/subtract %esp 0x20/imm32 +191 68/push 0x20/imm32/size +192 68/push 0/imm32/read +193 68/push 0/imm32/write +194 89/<- %ecx 4/r32/esp +195 # construct directive in buf +196 # . set fg +197 (write %ecx Esc) +198 (write %ecx "[38;5;") +199 (write-int32-decimal %ecx *(ebp+8)) +200 (write %ecx "m") +201 # . set bg +202 (write %ecx Esc) +203 (write %ecx "[48;5;") +204 (write-int32-decimal %ecx *(ebp+0xc)) +205 (write %ecx "m") +206 # flush +207 (write-stream 2 %ecx) +208 $start-color-on-screen:end: +209 # . reclaim locals +210 81 0/subop/add %esp 0x2c/imm32 +211 # . restore registers +212 59/pop-to-ecx +213 # . epilogue +214 89/<- %esp 5/r32/ebp +215 5d/pop-to-ebp +216 c3/return +217 +218 start-bold-on-screen: +219 # . prologue +220 55/push-ebp +221 89/<- %ebp 4/r32/esp +222 # +223 (write 2 Esc) +224 (write 2 "[1m") +225 $start-bold-on-screen:end: +226 # . epilogue +227 89/<- %esp 5/r32/ebp +228 5d/pop-to-ebp +229 c3/return +230 +231 start-underline-on-screen: +232 # . prologue +233 55/push-ebp +234 89/<- %ebp 4/r32/esp +235 # +236 (write 2 Esc) +237 (write 2 "[4m") +238 $start-underline-on-screen:end: +239 # . epilogue +240 89/<- %esp 5/r32/ebp +241 5d/pop-to-ebp +242 c3/return +243 +244 start-reverse-video-on-screen: +245 # . prologue +246 55/push-ebp +247 89/<- %ebp 4/r32/esp +248 # +249 (write 2 Esc) +250 (write 2 "[7m") +251 $start-reverse-video-on-screen:end: +252 # . epilogue +253 89/<- %esp 5/r32/ebp +254 5d/pop-to-ebp +255 c3/return +256 +257 # might require enabling blinking in your terminal program +258 start-blinking-on-screen: +259 # . prologue +260 55/push-ebp +261 89/<- %ebp 4/r32/esp +262 # +263 (write 2 Esc) +264 (write 2 "[5m") +265 $start-blinking-on-screen:end: +266 # . epilogue +267 89/<- %esp 5/r32/ebp +268 5d/pop-to-ebp +269 c3/return +270 +271 hide-cursor-on-screen: +272 # . prologue +273 55/push-ebp +274 89/<- %ebp 4/r32/esp +275 # +276 (write 2 Esc) +277 (write 2 "[?25l") +278 $hide-cursor-on-screen:end: +279 # . epilogue +280 89/<- %esp 5/r32/ebp +281 5d/pop-to-ebp +282 c3/return +283 +284 show-cursor-on-screen: +285 # . prologue +286 55/push-ebp +287 89/<- %ebp 4/r32/esp +288 # +289 (write 2 Esc) +290 (write 2 "[?12l") +291 (write 2 Esc) +292 (write 2 "[?25h") +293 $show-cursor-on-screen:end: +294 # . epilogue +295 89/<- %esp 5/r32/ebp +296 5d/pop-to-ebp +297 c3/return +298 +299 # This is a low-level detail; I don't think everything should be a file. +300 # +301 # Open "/dev/tty" if necessary and cache its file descriptor in Terminal-file-descriptor +302 # where later primitives can use it. +303 _maybe-open-terminal: +304 81 7/subop/compare *Terminal-file-descriptor -1/imm32 +305 75/jump-if-!= $_maybe-open-terminal:epilogue/disp8 +306 # . save registers +307 50/push-eax +308 51/push-ecx +309 53/push-ebx +310 # open("/dev/tty", O_RDWR) +311 bb/copy-to-ebx Terminal-filename/imm32 +312 b9/copy-to-ecx 2/imm32/O_RDWR +313 e8/call syscall_open/disp32 +314 89/<- *Terminal-file-descriptor 0/r32/eax +315 $_maybe-open-terminal:end: +316 # . restore registers +317 5b/pop-to-ebx +318 59/pop-to-ecx +319 58/pop-to-eax +320 $_maybe-open-terminal:epilogue: +321 c3/return +322 +323 == data +324 +325 Terminal-file-descriptor: # (addr int) +326 -1/imm32 327 -328 Terminal-file-descriptor: # (addr int) -329 -1/imm32 -330 -331 Esc: # (addr array byte) -332 # size -333 1/imm32 -334 # data -335 0x1b -336 -337 Terminal-filename: # (addr kernel-string) -338 # "/dev/null" -339 2f/slash 64/d 65/e 76/v 2f/slash 74/t 74/t 79/y 0/nul +328 Esc: # (addr array byte) +329 # size +330 1/imm32 +331 # data +332 0x1b +333 +334 Terminal-filename: # (addr kernel-string) +335 # "/dev/null" +336 2f/slash 64/d 65/e 76/v 2f/slash 74/t 74/t 79/y 0/nul -- cgit 1.4.1-2-gfad0