From 2773c45b1327103016dcdb971ccbd0188066d7e1 Mon Sep 17 00:00:00 2001 From: Robert Pengelly Date: Wed, 18 Sep 2024 20:22:05 +0100 Subject: [PATCH] More Ctrl+C --- build/chimaera.img | Bin 368640 -> 368640 bytes build/chimaera.vhd | Bin 34120704 -> 34120704 bytes src/apps/hello/Makefile.unix | 3 +++ src/apps/hello/hello.asm | 16 ++++++++++---- src/apps/hello/hello.c | 32 +++++++++++++++++++++++++++ src/apps/hello/test.c | 6 ----- src/kernel/int21.asm | 41 +++++++++++++++++++++++++++++++++++ src/kernel/int23.asm | 33 ++++++++++++++++++++++++++++ src/utils/binutils/as | 2 +- 9 files changed, 122 insertions(+), 11 deletions(-) create mode 100644 src/apps/hello/hello.c delete mode 100644 src/apps/hello/test.c diff --git a/build/chimaera.img b/build/chimaera.img index 06c33d3b52a1e49de2404b3882e0e0d74cd7ea67..ba8e0bfeed27209aa84ff3bb1d5c7c4524cf86c6 100644 GIT binary patch delta 3510 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 diff --git a/build/chimaera.vhd b/build/chimaera.vhd index 235eb5c54e830897e07e2774e19228ef1233a3bf..d02a78b548617f4613338af23fc813ec3323a63e 100644 GIT binary patch delta 6049 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 delta 5943 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 diff --git a/src/apps/hello/Makefile.unix b/src/apps/hello/Makefile.unix index 14cc203..df41716 100644 --- a/src/apps/hello/Makefile.unix +++ b/src/apps/hello/Makefile.unix @@ -19,3 +19,6 @@ hello.com: ../../lib/crt/crt0.o crlf.o hello.o writechr.o writehex.o writestr.o %.o: %.asm ../../utils/binutils/sasm -I$(SRCDIR)/../../lib/crt/include -l $*.lst -o $@ $< + +#%.asm: %.c +# ../../utils/cc/scc -S -o $@ $< diff --git a/src/apps/hello/hello.asm b/src/apps/hello/hello.asm index 4ed55a5..66c03e0 100644 --- a/src/apps/hello/hello.asm +++ b/src/apps/hello/hello.asm @@ -24,6 +24,14 @@ _main: mov bx, offset _msg_hello call _writestr +.L1: + + mov ah, HEX (02) + mov dl, 'A' + int HEX (21) + + jmp .L1 + ; mov bp, sp ; ; mov ax, bp @@ -70,10 +78,10 @@ _main: ; call _writehex ; call _crlf - mov ax, HEX (4B01) - mov bx, offset _param_blk - mov dx, offset _app_name - int HEX (21) +; mov ax, HEX (4B01) +; mov bx, offset _param_blk +; mov dx, offset _app_name +; int HEX (21) ; mov ah, HEX (62) ; int HEX (21) diff --git a/src/apps/hello/hello.c b/src/apps/hello/hello.c new file mode 100644 index 0000000..a9a47f7 --- /dev/null +++ b/src/apps/hello/hello.c @@ -0,0 +1,32 @@ +/****************************************************************************** + * @file hello.c + *****************************************************************************/ +/*asm ( + + "_start:\n" + "xor bp, bp\n" + "push bp\n" + "mov bp, sp" + +);*/ + +//asm inline ".ret:\n"; +//asm inline "ret\n"; + +/*asm volatile ( + "push bp\n" + "mov bp, sp\n" +);*/ + +unsigned char a; +unsigned short b; +unsigned int c; + +unsigned char *abc; +//unsigned long d; + +//extern void b (); +static void dead_code () {} + +int main (argc, argv) { +} diff --git a/src/apps/hello/test.c b/src/apps/hello/test.c deleted file mode 100644 index dc8fabd..0000000 --- a/src/apps/hello/test.c +++ /dev/null @@ -1,6 +0,0 @@ -/****************************************************************************** - * @file hello.c - *****************************************************************************/ -int main (int argc, char **argv) { - return 0; -} diff --git a/src/kernel/int21.asm b/src/kernel/int21.asm index e300cf6..f73c893 100644 --- a/src/kernel/int21.asm +++ b/src/kernel/int21.asm @@ -1086,6 +1086,26 @@ _int21_02: push ax + call _check_handle_break + jnc _int21_02.write + + mov al, '^' + call _writechr + + mov al, 'C' + call _writechr + + mov al, HEX (0D) + call _writechr + + mov al, HEX (0A) + call _writechr + + pop ax + jmp _spawn_int23 + +_int21_02.write: + mov al, dl call _writechr @@ -1190,6 +1210,27 @@ _int21_09: _int21_09.loop: + call _check_handle_break + jnc _int21_09.print + + mov al, '^' + call _writechr + + mov al, 'C' + call _writechr + + mov al, HEX (0D) + call _writechr + + mov al, HEX (0A) + call _writechr + + pop si + pop ax + jmp _spawn_int23 + +_int21_09.print: + lodsb cmp al, '$' diff --git a/src/kernel/int23.asm b/src/kernel/int23.asm index b422cbb..1af3838 100644 --- a/src/kernel/int23.asm +++ b/src/kernel/int23.asm @@ -5,6 +5,39 @@ % define HEX(y) 0x##y %endif +;****************************************************************************** +; @function _check_handle_break +;****************************************************************************** +global _check_handle_break +_check_handle_break: + + push es + push bx + push ax + + xor bx, bx + mov es, bx + mov bx, HEX (0471) + + mov al, es:[bx] + + and al, HEX (80) + jnz _check_handle_break.break + + clc + jmp _check_handle_break.done + +_check_handle_break.break: + + stc + +_check_handle_break.done: + + pop ax + pop bx + pop es + ret + ;****************************************************************************** ; @function _regain_control_int23 ;****************************************************************************** diff --git a/src/utils/binutils/as b/src/utils/binutils/as index 1c5f2de..6d9cd8f 160000 --- a/src/utils/binutils/as +++ b/src/utils/binutils/as @@ -1 +1 @@ -Subproject commit 1c5f2de0ea49b930fc16bbf187b1adb64cd01832 +Subproject commit 6d9cd8ff9e955a89b83f3e5fdd0605b6b00a1f26 -- 2.34.1