From 21efe406346aee850b1fe0f3050f10c28310f5bf Mon Sep 17 00:00:00 2001 From: DeaDDooMER Date: Wed, 27 Jun 2018 18:24:33 +0300 Subject: [PATCH 1/1] Initial Bare Metal BlackBox Prototype --- Boot486/1run.sh | 4 + Boot486/2run.sh | 11 + Boot486/boot0.S | 440 +++++++++++++++++++++++++++++++++++ Boot486/dis.sh | 4 + Boot486/gdbcommands | 6 + Boot486/kdis.sh | 4 + Boot486/make.sh | 6 + Boot486/mkcharfn.c | 169 ++++++++++++++ Boot486/mksdb.sh | 11 + Boot486/run.sh | 4 + Clean486.sh | 5 + Docu486/Build-Tool.odc | Bin 0 -> 2181 bytes Dsw/Docu/BMBB-Build-Tool.odc | Bin 0 -> 1533 bytes Dsw/Docu/Cmds.odc | Bin 0 -> 2858 bytes Dsw/Docu/Compiler486.odc | Bin 0 -> 6027 bytes Dsw/Mod/Cmds.odc | Bin 0 -> 2642 bytes Dsw/Mod/Compiler486.odc | Bin 0 -> 21014 bytes Dsw/Mod/Linker.odc | Bin 0 -> 29618 bytes Dsw/Rsrc/Goto.odc | Bin 0 -> 1190 bytes Dsw/Rsrc/Menus.odc | Bin 0 -> 1811 bytes Dsw/Rsrc/Strings.odc | Bin 0 -> 1219 bytes Host/Mod486/Keyboard.odc | Bin 0 -> 6344 bytes Host/Mod486/RamFiles.odc | Bin 0 -> 13307 bytes Host/Mod486/Shell.odc | Bin 0 -> 5142 bytes Host/Mod486/Speaker.odc | Bin 0 -> 2390 bytes Host/Mod486/Unicode.odc | Bin 0 -> 38078 bytes Make486.sh | 4 + Run486.sh | 4 + System/Mod486/Init.odc | Bin 0 -> 4856 bytes System/Mod486/Kernel.odc | Bin 0 -> 84020 bytes 30 files changed, 672 insertions(+) create mode 100755 Boot486/1run.sh create mode 100755 Boot486/2run.sh create mode 100644 Boot486/boot0.S create mode 100755 Boot486/dis.sh create mode 100644 Boot486/gdbcommands create mode 100755 Boot486/kdis.sh create mode 100755 Boot486/make.sh create mode 100644 Boot486/mkcharfn.c create mode 100755 Boot486/mksdb.sh create mode 100755 Boot486/run.sh create mode 100755 Clean486.sh create mode 100644 Docu486/Build-Tool.odc create mode 100644 Dsw/Docu/BMBB-Build-Tool.odc create mode 100644 Dsw/Docu/Cmds.odc create mode 100644 Dsw/Docu/Compiler486.odc create mode 100644 Dsw/Mod/Cmds.odc create mode 100644 Dsw/Mod/Compiler486.odc create mode 100644 Dsw/Mod/Linker.odc create mode 100644 Dsw/Rsrc/Goto.odc create mode 100644 Dsw/Rsrc/Menus.odc create mode 100644 Dsw/Rsrc/Strings.odc create mode 100644 Host/Mod486/Keyboard.odc create mode 100644 Host/Mod486/RamFiles.odc create mode 100644 Host/Mod486/Shell.odc create mode 100644 Host/Mod486/Speaker.odc create mode 100644 Host/Mod486/Unicode.odc create mode 100755 Make486.sh create mode 100755 Run486.sh create mode 100644 System/Mod486/Init.odc create mode 100644 System/Mod486/Kernel.odc diff --git a/Boot486/1run.sh b/Boot486/1run.sh new file mode 100755 index 0000000..25caf33 --- /dev/null +++ b/Boot486/1run.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +set -e +qemu-system-i386 -s -S -fda ../BlackBox.img diff --git a/Boot486/2run.sh b/Boot486/2run.sh new file mode 100755 index 0000000..f36443c --- /dev/null +++ b/Boot486/2run.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +#bochs -q 'boot:a' 'floppya: 1_44=../BlackBox.img, status=inserted' +#bochs -q 'boot:c' 'ata0-master: type=disk, path="boot.bin", mode=flat' +#bochs -q 'boot:c' 'ata0-master: type=disk, path="boot.bin", mode=flat' 'display_library: x, options="gui_debug"' 2> bochs.log +bochs -q \ + 'boot:a' \ + 'floppya: 1_44=boot.bin, status=inserted' \ + 'display_library: x, options="gui_debug"' \ + 'com1: enabled=1, mode=file, dev=serial.txt' \ +2> bochs.log diff --git a/Boot486/boot0.S b/Boot486/boot0.S new file mode 100644 index 0000000..21608cb --- /dev/null +++ b/Boot486/boot0.S @@ -0,0 +1,440 @@ +.text +.global _start + +/* + * Bootloader configuration + */ + +.set STACK1, 0x7000 +.set STACK2, 0xe000 +.set BUFFER, 0x8000 # 0x80000 - 0x8000 = 480k +.set READBLOCKS, 1 + +/* + * Kernel configuration (sync with Kernel.odc!) + */ + +.set KernelSizeAdr, 0x7e00 +.set BootDiskAdr, 0x7e04 +.set BootDiskDxAdr, 0x7e06 +.set BootDiskCxAdr, 0x7e08 +.set MemoryMapAdr, 0x7e0A +.set ImageBase, 0x1000000 + +# =========================================================================== # +# Stage 1 +# =========================================================================== # + +.code16 +_start: +stage1: +# 1. Setup canonical %cs:%eip, segment registers %ds, %es, %fs, %gs, %ss and stack %sp + cli + ljmp $0x0, $canonized_label; canonized_label: + xor %ax, %ax + mov %ax, %ds + mov %ax, %es +# mov %ax, %fs +# mov %ax, %gs + mov %ax, %ss + mov $STACK1, %sp + + mov %dx, BootDiskAdr + call mapmem + +# 2. Enable A20 gate + call enable_A20 + sti + +# 3. Reset disk controller (%dl and %dh initialized by bios) and read Kernel into buffer + movl $(kernel_code_end - kernel_code_start), KernelSizeAdr + + stage1__read: + mov current_sector, %ax + add $1, %ax + call lba2chs + + mov current_sector, %ax + shl $5, %ax + add $(BUFFER / 16), %ax + mov %ax, %es + call readsectors + + mov current_sector, %ax + add $READBLOCKS, %ax + mov %ax, current_sector + cmp $((kernel_code_end - kernel_code_start + 511) / 512), %ax + jl stage1__read + +# 4. Disable interrupts and load GDT + mov $msg_protected_mode, %si + call print + cli + lgdt gdt_info + +# 5. Switch to protected mode + mov %cr0, %eax + or $1, %al + mov %eax, %cr0 + jmp $8, $stage2 + +# =========================================================================== # +# Stage 2 +# =========================================================================== # + +.code32 +stage2: +# 6. Setup data segments %ds, %es, %fs, %gs and stack %sp + mov $16, %ax + mov %ax, %ds + mov %ax, %ss + mov %ax, %es + mov %ax, %fs + mov %ax, %gs + mov $STACK2, %sp +# 7. Copy Kernel from buffer + xor %eax, %eax + stage2_copy_loop: + mov BUFFER(%eax), %bh + mov %bh, ImageBase(%eax) + inc %eax + cmp $(kernel_code_end - kernel_code_start), %eax + jne stage2_copy_loop +# 8. Exec Kernel + jmp ImageBase + + +# =========================================================================== # +# Print asciiz string +# input: %si = String +# =========================================================================== # + +.code16 +print: + pusha + movb $0x0e, %ah + print__loop: + lodsb + orb %al, %al + jz print__ret + int $0x10 + jmp print__loop + print__ret: + popa + ret + +# =========================================================================== # +# Make memory map for kernel +# =========================================================================== # + +.code16 +mapmem: + pusha + movl $0, MemoryMapAdr + xor %ebx, %ebx + mov $(MemoryMapAdr + 4), %di + mapmem__loop: + mov $0xe820, %eax + mov $20, %ecx + mov $0x0534D4150, %edx + int $0x15 + jc mapmem__failed + cmp %edx, %eax + jne mapmem__failed + cmp $0, %ebx + je mapmem__done + add $20, %di + incl MemoryMapAdr + jmp mapmem__loop + mapmem__done: + popa + ret # <============ + mapmem__failed: + mov $msg_mapmem_failed, %si + call print + cli + hlt + +# =========================================================================== # +# Convert LBA to CHS +# input: %ax = LBA %dl = disk +# output: %ch = cylider %cl = sector %dh = head %dl = disk +# =========================================================================== # + +.code16 +lba2chs: +# push %es +# push %di + push %dx + push %ax + + clc + mov $0x0, %ax + mov %ax, %es + mov %ax, %di + mov $0x8, %ah + int $0x13 + jnc lba2chs__success + mov $msg_chs_error, %si + call print + cli + hlt + lba2chs__success: + mov %dx, BootDiskDxAdr + mov %cx, BootDiskCxAdr + + # SPT = %cl & 63 + # HPC = %dh + 1 + # CYL = LBA / ( HPC * SPT ) + # TEMP = LBA % ( HPC * SPT ) + # HEAD = TEMP / SPT + # SECT = TEMP % SPT + 1 + + # %ax = FREE %bx = FREE %cx = GSPT %dx = HPC-1 + and $0x3F, %cl + movzx %cl, %cx + + # %ax = FREE %bx = FREE %cx = SPT %dx = HPC-1 + movzx %dh, %dx + inc %dx + + # %ax = FREE %bx = FREE %cx = SPT %dx = HPC + mov %dx, %ax + mul %cx; # overflow in %dx + mov %ax, %dx + + # %ax = FREE %bx = FREE %cx = SPT %dx = (HPC * SPT) + pop %ax # LBA + mov %dx, %bx + xor %dx, %dx + div %bx + xchg %ax, %dx + + # %ax = TEMP %bx = FREE %cx = SPT %dx = CYL + mov %dx, %bx + xor %dx, %dx + div %cx + inc %dx + + # %ax = HEAD %bx = CYL %cx = FREE %dx = SECT + mov %bl, %ch + mov %bh, %cl + shl $6, %cl + add %dx, %cx + + # %ax = HEAD %bx = FREE %cx = CYL&SECT %dx = FREE + pop %dx + mov %al, %dh + + # %ax = FREE %bx = FREE %cx = CYL&SECT %dx = HEAD&DISK + +# pop %di +# pop %es + ret + +# =========================================================================== # +# Read sectors to buffer +# input: %cx = Cylider+Sector; %es = 64k buf +# =========================================================================== # + +.code16 +readsectors: + xor %ah, %ah + int $0x13 + + xor %bx, %bx + mov $0x2, %ah + mov $READBLOCKS, %al + clc + int $0x13 + + jnc readsectors__success + + /* zero if sectors not readed */ + or %ah, %ah + jnz readsectors__success + + mov $msg_kernel_read_failed, %si + call print + cli + hlt + +readsectors__success: + ret + +# =========================================================================== # +# Check that A20 Gate is enabled +# output: set zero flag if disabled +# restore: %ds %es +# =========================================================================== # + +.code16 +check_A20: + push %ds + push %es +# push %ax +# push %di +# push %si + + xor %ax, %ax + mov %ax, %es + + not %ax + mov %ax, %ds + + mov $0x0500, %di + mov $0x0510, %si + + mov %es:0(%di), %al + push %ax + + mov %ds:0(%si), %al + push %ax + + movb $0x00, %es:0(%di) + movb $0xff, %ds:0(%si) + + cmpb $0xff, %es:0(%di) + + pop %ax + mov %es:0(%di), %al + + pop %ax + mov %es:0(%di), %al + + mov $0, %ax + + je check_A20__exit + + mov $1, %ax + +check_A20__exit: +# pop %si +# pop %di +# pop %ax + pop %es + pop %ds + or %al, %al + ret + +# =========================================================================== # +# Enable A20 Gate +# =========================================================================== # + +enable_A20: + /* First check */ + call check_A20 + jnz enable_A20__success + + /* BIOS method */ + mov $0x2401, %ax + int $0x15 + + call check_A20 + jnz enable_A20__success + + /* Keyboard method 1 */ + mov $0xd0, %al + out %al, $0x64 + + call check_A20 + jnz enable_A20__success + + /* Keyboard method 2 */ +/* +# cli + + call enable_A20__wait1 + mov $0xad, %al + out %al, $0x64 + + call enable_A20__wait1 + mov $0xd0, %al + out %al, $0x64 + + enable_A20__wait2: + in $0x64, %al + test $1, %al + jz enable_A20__wait2 + + in $0x60, %al + push %eax + + call enable_A20__wait1 + mov $0xd1, %al + out %al, $0x64 + + call enable_A20__wait1 + pop %eax + or $2, %al + out %al, $0x64 + + call enable_A20__wait1 + mov $0xae, %al + out %al, $0x64 + + call enable_A20__wait1 +# sti + +# call check_A20 +# jnz enable_A20__success +*/ + + /* Control port A method */ + mov $1, %al + out %al, $0x92 + + call check_A20 + jnz enable_A20__success + + /* Fast method */ + in $0xee, %al + + call check_A20 + jnz enable_A20__success + + mov $msg_a20_failed, %si + call print +# cli +# hlt + +enable_A20__success: + ret + +/* +enable_A20__wait1: + in $0x64, %al + test $2, %al + jnz enable_A20__wait1 + ret +*/ + +# =========================================================================== # +# =========================================================================== # +# =========================================================================== # + +msg_mapmem_failed: .asciz "1" +msg_a20_failed: .asciz "2" +msg_chs_error: .asciz "3" +msg_kernel_read_failed: .asciz "4" + +msg_protected_mode: .asciz ">5" + +current_sector: +.word 0 +gdt_begin: +.byte 0x00, 0x00, 0, 0, 0, 0b00000000, 0b00000000, 0 # null dsc +.byte 0xff, 0xff, 0, 0, 0, 0b10011010, 0b11001111, 0 # code dsc +.byte 0xff, 0xff, 0, 0, 0, 0b10010010, 0b11001111, 0 # data dsc +gdt_info: +.word (gdt_info - gdt_begin - 1) +.quad (gdt_begin) + +.fill _start + 510 - . +.word 0xaa55 + +kernel_code_start: +.incbin "../BlackBox.bin" +kernel_code_end: + +.fill _start + (1440 * 1024) - . diff --git a/Boot486/dis.sh b/Boot486/dis.sh new file mode 100755 index 0000000..fa9dee1 --- /dev/null +++ b/Boot486/dis.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +set -e +objdump -b binary -m i8086 -D boot.bin | less diff --git a/Boot486/gdbcommands b/Boot486/gdbcommands new file mode 100644 index 0000000..f06460f --- /dev/null +++ b/Boot486/gdbcommands @@ -0,0 +1,6 @@ +target remote localhost:1234 +set architecture i8086 +break *0x7c00 +break *0x1000000 +cont +#layout asm diff --git a/Boot486/kdis.sh b/Boot486/kdis.sh new file mode 100755 index 0000000..1b491a6 --- /dev/null +++ b/Boot486/kdis.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +set -e +objdump -b binary -m i386 -D ../../Kernel.bin | less diff --git a/Boot486/make.sh b/Boot486/make.sh new file mode 100755 index 0000000..41f80bd --- /dev/null +++ b/Boot486/make.sh @@ -0,0 +1,6 @@ +#!/bin/sh + +set -e +as -o boot0.o boot0.S +ld --oformat binary -o ../BlackBox.img -Ttext 0x7c00 boot0.o +rm -f boot0.o diff --git a/Boot486/mkcharfn.c b/Boot486/mkcharfn.c new file mode 100644 index 0000000..5ee9dc0 --- /dev/null +++ b/Boot486/mkcharfn.c @@ -0,0 +1,169 @@ +#include +#include +#include +#include + +#define MAX_CP_CAHR 0x10000 + +static wint_t isalphatab[MAX_CP_CAHR]; +static wint_t isuppertab[MAX_CP_CAHR]; +static wint_t islowertab[MAX_CP_CAHR]; +static wint_t uppertable[MAX_CP_CAHR]; +static wint_t lowertable[MAX_CP_CAHR]; + +static void +print_tabs(int n) { + for (int i = 0; i < n; i++) { + putchar('\t'); + } +} + +static void +print_range (wint_t *tab, int max, int t, int retbool) { + int i = 0; + int begin = 0; + int end = 0; + int oddmode = 0; + int fold = 0; + int count = 0; + + print_tabs(t); + printf("CASE ch OF\n"); + + while (i < max) { + while ((i < max) && (tab[i] == 0)) ++i; + begin = i; + + oddmode = 0; + if (i + 2 < max && tab[i + 1] == 0 && tab[i + 2] != 0) { + if (tab[i] % 2 == 1) { + oddmode = 1; + } else { + oddmode = 2; + } + } + + if (oddmode == 0) { + while (i < max && tab[i] != 0) i += 1; + end = i - 1; + } else { + while (i + 1 < max && tab[i] != 0 && tab[i + 1] == 0) i += 2; + end = i; + } + + if (i < max && begin <= end) { + print_tabs(t); + // printf("(* %i *) ", oddmode) + printf("| "); + + if (begin == end) { + if (retbool) { + printf("0%XX: RETURN TRUE\n", begin); + } else { + printf("0%XX: RETURN 0%XX\n", begin, tab[begin]); + } + } else { + printf("0%XX..0%XX: ", begin, end); + if (retbool) { + if (oddmode == 0) { + printf("RETURN TRUE\n"); + } else if (oddmode == 1) { + printf("RETURN ODD(ORD(ch))\n"); + } else if (oddmode == 2) { + printf("RETURN ~ODD(ORD(ch))\n"); + } + } else { + if (oddmode == 0) { + printf("RETURN CHR(0%XH + ORD(ch) - 0%XH)\n", tab[begin], begin); + } else if (oddmode == 1) { + printf("IF ODD(ORD(ch)) THEN RETURN CHR(0%XH + ORD(ch) - 0%XH) ELSE RETURN ch END\n", tab[begin], begin); + } else if (oddmode == 2) { + printf("IF ~ODD(ORD(ch)) THEN RETURN CHR(0%XH + ORD(ch) - 0%XH) ELSE RETURN ch END\n", tab[begin], begin); + } + } + } + + count += 1; + if (count > 4096) { + count = 0; + fold += 1; + print_tabs(t); + printf("ELSE\n"); + t += 1; + print_tabs(t); + printf("CASE ch OF\n"); + } + } + + i += 1; + } + + for (int i = 0; i < fold + 1; i++) { + print_tabs(t); + printf("ELSE "); + if (retbool) { + printf("RETURN FALSE\n"); + } else { + printf("RETURN ch\n"); + } + print_tabs(t); + printf("END\n"); + t -= 1; + } +} + +int +main (int argc, char **argv) { + setlocale(LC_ALL, ""); + for (wint_t i = 0; i < MAX_CP_CAHR; i++) { + isalphatab[i] = iswalpha(i) ? i : 0; + isuppertab[i] = iswupper(i) ? i : 0; + islowertab[i] = iswlower(i) ? i : 0; + uppertable[i] = (towupper(i) == i) ? 0 : towupper(i); + lowertable[i] = (towlower(i) == i) ? 0 : towlower(i); + } + + printf("MODULE Unicode;\n\n"); + + printf("\tIMPORT Kernel;\n\n"); + + printf("\tTYPE\n"); + printf("\t\tHook = POINTER TO RECORD (Kernel.CharHook) END;\n\n"); + + printf("\tPROCEDURE (h: Hook) Upper (ch: CHAR): CHAR;\n"); + printf("\tBEGIN\n"); + print_range(uppertable, MAX_CP_CAHR, 2, 0); + printf("\tEND Upper;\n\n"); + + printf("\tPROCEDURE (h: Hook) Lower (ch: CHAR): CHAR;\n"); + printf("\tBEGIN\n"); + print_range(lowertable, MAX_CP_CAHR, 2, 0); + printf("\tEND Lower;\n\n"); + + printf("\tPROCEDURE (h: Hook) IsAlpha (ch: CHAR): BOOLEAN;\n"); + printf("\tBEGIN\n"); + print_range(isalphatab, MAX_CP_CAHR, 2, 1); + printf("\tEND IsAlpha;\n\n"); + + printf("\tPROCEDURE (h: Hook) IsUpper (ch: CHAR): BOOLEAN;\n"); + printf("\tBEGIN\n"); + print_range(isuppertab, MAX_CP_CAHR, 2, 1); + printf("\tEND IsUpper;\n\n"); + + printf("\tPROCEDURE (h: Hook) IsLower (ch: CHAR): BOOLEAN;\n"); + printf("\tBEGIN\n"); + print_range(islowertab, MAX_CP_CAHR, 2, 1); + printf("\tEND IsLower;\n\n"); + + printf("\tPROCEDURE Init;\n"); + printf("\t\tVAR h: Hook;\n"); + printf("\tBEGIN\n"); + printf("\t\tNEW(h); Kernel.SetCharHook(h)\n"); + printf("\tEND Init;\n\n"); + + printf("BEGIN\n"); + printf("\tInit\n"); + printf("CLOSE\n"); + printf("\tKernel.SetCharHook(NIL)\n"); + printf("END Unicode."); +} diff --git a/Boot486/mksdb.sh b/Boot486/mksdb.sh new file mode 100755 index 0000000..07e3d8d --- /dev/null +++ b/Boot486/mksdb.sh @@ -0,0 +1,11 @@ +#!/bin/sh + +DRIVE=/dev/sdb + +if ! [ -e $DRIVE ]; then + echo "${DRIVE} not available" + exit 1 +fi + +echo "overwrite ${DRIVE}" +sudo dd if=boot.bin of=$DRIVE diff --git a/Boot486/run.sh b/Boot486/run.sh new file mode 100755 index 0000000..6a315f7 --- /dev/null +++ b/Boot486/run.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +set -e +qemu-system-i386 -s -m 1G -fda ../BlackBox.img diff --git a/Clean486.sh b/Clean486.sh new file mode 100755 index 0000000..bdaa3d3 --- /dev/null +++ b/Clean486.sh @@ -0,0 +1,5 @@ +#!/bin/sh + +find . -type d -name 'Code486' -exec rm -rv {} + +find . -type d -name 'Sym486' -exec rm -rv {} + +rm -f BlackBox.bin BlackBox.img diff --git a/Docu486/Build-Tool.odc b/Docu486/Build-Tool.odc new file mode 100644 index 0000000000000000000000000000000000000000..2eae9117252904ec3b8dd1e5c1d949edd96bca9e GIT binary patch literal 2181 zcmd5;&1(}u6rZf(ch!S}SPx?@)DKuah=^FIOK{<64W0K^FdQM$r2W`yiPSZ4s@rwxyMLl-(GWA;GGBwB1rmUd?1E7ycvG&3n6ah+V) zRs?yYC*TEdJu>Kfc%rOT6!m(@t9U{k>2`|pln)trYG$1=IS|My?Hc170azfv>O;#VkR#p%-dVN@u`^#dH#6DV-HdR0Gm-C~Gu;i@=vsT4pk& z0ZUp@1+)hAU8hhQS}XylDaf8R8LuEY2?Z&ob0UGazED)%bpWeQbI@)i4Boh$6(L*; zIwey1h({GDI*OhT>pC111PvB08>JbxwkX1+sxz8TLHrGHi`|&OMdj)5vvnp~Iq{h!{QxRg;P`G1VT6rz_0qu5Qpv zWHI;2+P%P55bOueDCnr>n>HXtX^$9@5#-!<@%jQN*cLu(G~E_*oItL{y5XsQ(H2;4 zW_uEvV;g*;aZEoj`u+NW(Ivx3wCm=ruNvgVj{^A!eH{f>m{&?`+pkjQy#zH+?ds?L u)>CqFmyEf83j6ok?y>ctyF0AZrf0R`u zASie$p8N;Iqkm4iryc}-Z|2SJY-91{!18|c-n`%Y*m=`vK2!|WWT&ax!@fv#7KFOv zHcgSWnP;l%8!FLJoQO0Fp2T9^9!BKtr=eDoi^+YLQhd35eqYNrs;6GCMytfW5T>bm6-? zyBO5*kBU)4_4`rM!9P?fw`wX&K0x%GB&B{1wqsJU?WNj&0TvUlrPUa|DR*Hm5hpcd zwubx^o!}(BgkF%UOejC&R3ts#-}Pp;4(%AkQl!^zTn`AZbmNRKi!>3EFR4sFPU1G) zK!d}9hanyBjhWNJ;IujVx^)!5 zQ`%G#+HVe><2-`mzFz%iNnU=hu}|=xqQMy_`J8hi`R^IVgC}?GcWe6@JF&~|_%HO{ iUb`No7Bldao1AG1JxcLSjdyKz&!`L6Z44gaw literal 0 HcmV?d00001 diff --git a/Dsw/Docu/Cmds.odc b/Dsw/Docu/Cmds.odc new file mode 100644 index 0000000000000000000000000000000000000000..97f233e99d5f7f4ed4073026ffabedae95edd2ea GIT binary patch literal 2858 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 P8M;T`KW6;d*NnXdRSDNb literal 0 HcmV?d00001 diff --git a/Dsw/Mod/Compiler486.odc b/Dsw/Mod/Compiler486.odc new file mode 100644 index 0000000000000000000000000000000000000000..8a2910aa06f4df2833f37f01f610380c5eed8f43 GIT binary patch literal 21014 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νQA%+hprd=w6Y2;YL9F7CRt7>f7&W9#`&Wx(qOW5Bm%#?dW5Xq$3uMP&Pu z97>o`?oTc(tyV|~GeWNn-QhiPB7xOUx_Wb~ARp%YIQd6dn1!s-^_i~2LAC`}knkvF zIJ3Ao6B(g91)>ra!KvdA8jOa5%~M<^OhR2tk&_PjGOrm8gp?)M97>uCO#HITn7x>_ z@`SGB10$K719pxlKj9c7is2zRU4C9hcsZH?QNeudbYwh5UlsFdDZ*N4M?aMz5&-0IGb^sV~U zq!(UuPK2O@lBF3RV}kfL3VD@Pg){=Sv=+$(7jYl7dv_1^q+EeGHS{=wRAKTLdy0bj zQcPKE=ecC(3wg<)NHV_BUi&R3-t;QyHY2x~d}b9V?2yZiCN>Y?&56Kw8nzQf(l9CE zr(1x6A{XnNaex5#P6(__V9EoVBcV0w7kYStPek5q`UD~x4}}-%iYRLS*ijpJsu&R@ zJF{XfQpT|?=21+Oa;y^aW_cCWQ;M}EDM6SF0`VvEb1jJ&&-vnDk)GtZ7(;yC>9wH& z52tdN2Kj_Lor4}S!JL9i!eb^lGKYn>YnErjH}<=kYl~v&Q6+dH9IsNK=Ff@O zhK*musyiJG=fao@4(QpzQyjxUlz{Z&G6oHs(fi(_M1xZ>Y;f9gCtuxMY~z3ffxatx z63H!12d88P>)yTb9yzZ^K5$bf0=7IIoPzY)l()K4#UWwedH5c>*!d6?b44o&imqj- zx3jxEKi(LeQZ+v;7X!FRP%tK!#P1Wi8$?S51(0p`Q3&(y`?7crQ6g&ZLtzT2ISnT< ztq-6BD%i|2CRA+iOCB*O5rLNRLL63fDYv4@2=X=OV3D!A{rd^ymqv!OvJmlRq=%aK z`*U!H92a{ar$dj?j%|W+(%pU)i7{#{;5H-nTqYHzl$`F`S8Yl`f=wAXDnSxGL6|r0 z05R`za9fUMS73_@w%`tgKf)?q3Og)3;L3Jt4KbiUY`d=~FiAD?L~M@^7jz*4IDRbH zv1I`}^m4*p*AsqbncSox5YyajC~PvsO^f&B@^mdi(q(#5kp)t9-Pg}uOZr5Srs}L5GH3_Je;4@&j};MWfQ1|5C}8-a0%u)Q~Ywx8}Ejn zVcsr)OU*0E3u?VA^^)0mh&L}pl5&|~w6wpAW3uHVoREu(@SOuc^F;BxDpxs(&yO(L zSs0Mz&iYQTar1@Ss}!&d@Uh`_+8@nT&N!<8^P(F9TVS=F{gL?DQHFvEkpbISqTVR1 zlZiOvw=9<@jhy=~XY!V&@kAVS`oyA;&l3S~hdYCV>!mYTh3#l?Lb%kG!^{B$?`^d( z_snBi{=l@a zgL+sULwR=Sn?54VC4xFm)OR|aeWOm;v&=}Hf%8F}f&rYs-N1z}10TS2?ZAco_vh7e|+KoAN0phU|MA~m}^Q}Yu1q>t_)G3Oz zg%)hHOw$cS4&bs$`Wb@sBJ1v*3z=W&EG>v}(T-=ehDHp1(kakWN0K`vjd_7C8VDwM zw~^{T!JB((gysB^y+)V|ZbfTu-HWSoZFPn^J%4htwDHrGle*&9{3eQXbAJDaL<>ZS z4ODroc0_QQ4tjhMB3E;5L$mxY6CC~#X^!V_<@=yu67%oV zC_O&r>q5yS!x0W_$)$6I{p=;{)o9$mh>nKG$9RqPc$SVGD+%A}m>2QfwKEun zNbJBs2h+vT>1cS25Mh{sRR|mKChCQ94<&t~kqr;QP!L+R$w&u@a!zhL+ore0IeNUm z#*u^-$X2KWi6oODFHXBGL8)iZX^2ipE|quMF`5UA4S8lSyx8XMc58_9^rSY7PK)nQ z=AF23YGKzHdmosR^REDlr~F`BkfQR!mxJ(IKq44EB4i8lL|Z~1AcVQ>cmbi{Kr|76 zWemxD_=eC7Az6QP@j+nknAgDj_lVxyf+=GUCY}-HMFYIq2K7VijK%3g+hk!B=T}

$rsSZ1@c`xmsGtKj zYZ1oTJ3#1K&ibRIkoU*4%lua#iXq+A+`CONI}^nU1al}|`bv*GnN-mr-?v47w{fcn zm$>!oN^nF8CxD=-984As%LmgiE^z!tUKnrpzK}pckO8XtG2DK=*C4NyxxhWgAV*|R z1HCd3dt=Qsn=ep8OroH4ekdnF;;__H36#2r z?7U9ClCV(GcDp|P7LR7#3ka1qcUVWg&-cb`f?i$dDqw9G7M|gw6zL2$2@YVb!emJ7 zM$4qD(!4Fn0*gZ(N8&1YpXk^M`|{Zm94(!V`*T>kwZ&6OLMzhHV+O;>^9t^(2t7WC z=7vp{IME_a7P%zWPuAK2*0AnOkLcmo<3O49jdo&38F8E@%03#)g(NzT-S>3Y1Rt zpZND2bwClevvLa39jVl|AVYO0VUTH(lXsgLRo@M*7K5G{kaoBC8bm{9+#{b6j7GO~ z4^GB;#$NH3hj-CWBGr|6#e{@KK>cQQ@e9?(FIu<@J{pQX5xIW$kVgq@aIa`e%g_nK zweWjCT^OGKcP%R`2m)lc7D14x-xy)+?FzYQ7tJbdNK|U89OJ0k*?l5q3I)0-a8eVR zP*|L*LzQeNf_KTON;^~;GzAItq@YH8%QCE_inf3l;u|J{k0`+TCEqiFU88`WH@rep zL{`I-lS1Em^&y;!7ai$Jh0>}5UgDOWT#;PQle`Vdvnz@W(xlu*7k358=G6pTmYB|n z1^TH19*A;r4a5X8LCX$yh0MXwZ-INdB1Xf@*S#z7d;G`%SVvTF(G3v&aEi>~m=y|= z77*X3(QnhB3BFs0&-29T;27qP$4s>Y-|Cc!DQk%>D1B^ZS@JM2>HI>5-#^r8T{CR? zbPaSWeZ(uireB?7icVj_K=?2}+L+Jm(|eSSu+rZze44MS%E2tvx1&~zP!Sf zK9Ud3Y2O+@sPd?QZ!>Nnzk@Wxip-D~``X_)q@oy!N*r{B`X+|NSNT PKmD8gwdlh?snz}uSaR`( literal 0 HcmV?d00001 diff --git a/Dsw/Mod/Linker.odc b/Dsw/Mod/Linker.odc new file mode 100644 index 0000000000000000000000000000000000000000..d12dca6dc38d83fe43b25f1152e5aae25ee904e1 GIT binary patch literal 29618 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 literal 0 HcmV?d00001 diff --git a/Dsw/Rsrc/Goto.odc b/Dsw/Rsrc/Goto.odc new file mode 100644 index 0000000000000000000000000000000000000000..b262aef9db8d2af926fed2ea45ddb82556909bdd GIT binary patch literal 1190 zcmZuxJ#Q015PcV{5Ze(#G7<$63UZU`3JQt{8qOq=5fI5JHO9As6L+`f?wmjhbaGlm z3rG}}5Pt$u=XcQ4*sdr*Vs>`!!wzfhz1f-BH#57l_Igh=XiOJ9J(@%+&Qf=f`Ng8A z(h+K=RlTRI>dxq_ge9M%}|9#|S8D zKvIl7akXH=InD1tf9~K%yN$1ZSE3zG(wFxqS+*W97M3H%#(?PkT8SQ&XG&9)Mt~u& zUXW`S1H2`DMwW1X7BT0F;JUSa3m2jCy6cqAYI literal 0 HcmV?d00001 diff --git a/Dsw/Rsrc/Menus.odc b/Dsw/Rsrc/Menus.odc new file mode 100644 index 0000000000000000000000000000000000000000..5765ceb6bba9a05511df29831340758e4fee8a38 GIT binary patch literal 1811 zcma)7&1(}u6rZi1sTKuA#DlD`Yn}k&@m- zq(=oo!IOCMF8&8zJ&J!qvZo#j`rgd!N3)Ik$nLy(AHVmT*_oG$Rc8cbFtS*u-=&`5 z`KGYLiA8ybBwYLL73PVy<58dI?>Tf+1*4Xj51WGd6hUE-5m*l87(6>irMjIcvBGTX zDyRg0!YWmsPgrz`s!O{vF*qzy3Hf=1kPPTQV3aZ#wdfO}D8e#h*0DLV1yec+2PC_t zP_`w8W&t1xB8ZZr7pOH7^70TNrvPUFqmmI0ijz(&3*kEt`-1ZQE6M4M3wk65DvRXT zE2)sLk}R&<7z8sqsHn$DNjoz4J4Q{zV=TgJDo#f`%0)Fm04inQX}eKf1#t%K#vXcc zw~b5inp!~Z9BN3-kb8#<|GiROT{p9{7T+w*!ONl>*_n)<-)3Bx71r%JF7>mSEc_s( z(zSU$w9XfF6k<+iEOj%+2*?EvbGHwX&7)v-v7dD zQkQmw!@L9GlHLd|GESff$F}cM^RC0ifuPE--IGz%J9wwx?U^lRt}*Ut%8NB90T)j0 zTfIlU7Gtgjr;$CH$1k?j;C^SR#stg3C!B>dQkolwflmorIa6J=)V0GF<1-gdo9ufP z;p^Tbxh9-(V5&DAmwW~kY*HT; znrc!pPE$N}Rr{6QD{_R^0CPh*4$6H!*+*zncM20PqoNuTD1|QyQDtHo4-b??cxF-*VcHaEhog^0V!Q{PpZ{GL5o&B;w_=bY8?sZ7_+6~g=tQ_&W z*@T4cfmIsL2eipQ#7&a2^4pjksKXdp`$5EMN)S{yc>>3wO^H=`Aj6(D;uWovL_t~j zR#t|rY-RL_7YS*|#!R6CoK6BbVnSbdY2E7@Ipm6>c+7%zkmPMC}Z@phZ<+C1TZ7wCE=Cz(J4;4ZG-bP{@CV(4L`{<-LarONQ~z&KTu%5Bw1ux z>SnGvbVt({+526b`Ww}Dwq92w*AJO^j~&Mkqj#PNTz``??gg~biW8DL!&}#nmseN3 zAf=31XKqQl{>yfw<<+RSOD$$ z#UdWl(rqP!Ia14&G^ei;)nr*ovD#@HLNZblk&!MG*~}>MQlQ}LI#*~)R0U4Nj}rBF zk!s5eCYxceu}30!uQx-4{--9>_!NU&jf+^o$)Cq^wSMe_cYF%)4{N|h-2eap literal 0 HcmV?d00001 diff --git a/Host/Mod486/Keyboard.odc b/Host/Mod486/Keyboard.odc new file mode 100644 index 0000000000000000000000000000000000000000..f19a17b38db0d8b73fb154940fb517e5eea98c34 GIT binary patch literal 6344 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 OZ}4%)P{+SEjQ;|Z-glt@ literal 0 HcmV?d00001 diff --git a/Host/Mod486/RamFiles.odc b/Host/Mod486/RamFiles.odc new file mode 100644 index 0000000000000000000000000000000000000000..5fe4a2a31abdcd9e96777a407e9aca04854b07d5 GIT binary patch literal 13307 zcmd5@&2L;+6(6@inSw$Ve1FGJ@0b^8~&}-<9Uu$rLa5_p+XnO6Vt0X%1@%#HOhCvb%!#;B!K? zRC@nhsZ>V$J^ae&tqK@dNaXmC!Q_yLD-opZ8Sa;vRpL#xIXl~I}l zp7x#zuqW~`;pAQR3Oz1l?u+G442276_;_o+SM~YJ`)e3i zXA2`rrGE#Qj1#WDA7F7Ee+sZIwgmU%0DFclnd8@C-am)l7ugbwQvnudJ0ONg=&J#D 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 literal 0 HcmV?d00001 diff --git a/Host/Mod486/Shell.odc b/Host/Mod486/Shell.odc new file mode 100644 index 0000000000000000000000000000000000000000..f8defd5dde359b10b5f8e3e1f75c229820521715 GIT binary patch literal 5142 zcmb_g&2QX96nB6^w-A8}2gCu5wvlkc)})m{C@F}|uG6f#-Hp7Peo*z`*t3aK$6jo2 zJ`gI<3JD2;5L`g21QI92i96!|;K+Z_=F|fcy!U3t9w(cUK&|!8cxK+4-+S{uW~R~X z#s)lh9yDWbw8^6^wR)MaKAJrB46Uo&-iV{j4I-YT)|G&7i@{jazVG+4IN`_?3L1ga z;qwf<-@ZuIyV?|&W1okDmBwFdrD|$vEpiGwL}xBS(4Wz#VfKjkkXhjUcOHi<7+Bjh5v~=dy{IAEDt04jU*&x-9yTgIQ~c@;?QyQOCc} z;T7zCsQrDp+gxeeY$;B&-Z~G%`N_#j>+*8f>9b2biFjC}zDs;}HFguf#+rc}#%nd! zT!t~fSp2Wd9L%vOgD-E3V= zFK3-bTmY7Zu{S5QV6|h<1?QV*1J#1sX+?v0o&h*g6%L{nAg=^9wowSm1~58uH@O>?tu?AFyJ$aoJNBw90l3o#Kzsk%{W=z;fwCr{S^n9DeJc!z6MUm z6BE@kCG-M?G;sl_hTW`O7zJcfnshQ3%>g)&zu-|@mx8f=M(HD;BMZX%U>uV*`b zQwArY?Lo1k+T7LZfh83#t9S&MA7|9<=s0GrvMsTrTv}uras`NvxM_h% z4pTE4M$V;2M2EZnxJmzq8-WXon1Q^xaHECmeH$cJkdGN04>!DY-A%Z!Ea)g<5_mmk z+evbp76R)wogB@k1>s}HC3a1>6N|?KX{-r^1lK29l}@iG>INv&Y%DpD!)5jtmV-10 zHmdvgslz1pxIaR#)HbvGHmVL!Ic~m`9q6;m-O5m;7mu_Gdq~<*-|&)~sO8yf3X$NW zTXK_!Jkxif5K)24yIO*3+6~i7$Xdisz2J)uT1rEt3^)LkG?CAtPi*gS4^C&u0k_$p zfpKX=7geMMC4y{)6Bq|OrR>KWLle%lHY9~pY%t7GBkXEE@(xy;Ifk8)B9}aos zn;skq@ce;-E6oe#Tqw>c7}3=BqNH*LI~^vB^sD^qKV_7QmBHjp;vZPX?MHJ$Qs1Kv!OcwS@kV92ys7TPGdUDC9A0O zpyhg55JyXKdnt>(Efw>_+ zS6kxd0dHB7I1KR`2d*<3St74r@HRv5Eb0fYXU26Yp8NXp%bAz(=noHG&}h$uK;?`S zAgYNO5s~aDTKDL(0yz8vFJ3@3xE|Km6YKP@`Rybj6CFyqCCR>S(?cD@+-gxHOvfY@# zxc848A5Tx&D4m#o+Rq+rHaRAWXHFZtbEVt_ix~BEnAe=_&cEUcOH|Y9$6|7o+nuO^v z9)YHg3SA2hdkz@daeM;Gp4;gLjz@;hwOTuYdQA5=g?cn@aDcx-Tk0NjeeMhYjhkZX}-D)5Y;PN?KNstz%r(*tbax; zT{^ZjjjsQ68ugV;OBuGv~?I@YSnAk0lsS0MUd0@4g?9$08R;IK`1dG z;Ba(=v0z0QAs02E&v?2OY7B}bpdKw}r_)vHK^r&d082hVsaCswxpu8i?aqPFVnK{* zYXh0BUv8IiCD#p5QCAh*seWZc8gvadfJz#CBZ_M83eD z4@Llw248Zs-GPHTr>2)U1-eP|lV`i~1ZhPgS{9Xa!2Oj;sBd0pG)%L+WU@*Y8Nwp( zu5;74U2bNyU>QPVrBE$4N+9cUoAF7vc3mG1k4#4O>UMU~FDH*|mCMN#H#c^vB#t6% zgU}AFG?DEKyMbyfaKJt@x-`o9Jz*OE6-;4J}#>MsK1liy0@ zd-za6LuP#ZekA%F;^BDyf%t9ybc literal 0 HcmV?d00001 diff --git a/Host/Mod486/Unicode.odc b/Host/Mod486/Unicode.odc new file mode 100644 index 0000000000000000000000000000000000000000..db8121937f8e68ac980a6c90ea183169b8a0148f GIT binary patch literal 38078 zcmc&-Pp=)xReu8!!GHw|7ExAj!D5^!)~)V)Z+B-vqWVw8Rwnk~u|oo@iRVeS;`oj1 zHzc4ag2{>v3W5blNFcF7toQeP0)$6<8e17$P zd6|BxzdwEd=K9qY0mXygpzi43=keb=f6G6Ath)Hd^@mq41eAiWO8MvOyQ(C1F}%3? z9yfgRIfi<1@t1#dad8X3{{m0`_sM6EuYPbNC}Nm1)^qVx_U4yjBYF_BUlu4oW*89* z08xk#lnlK$zY^gb{`%tLH}U%`c*?&&poicToB5lYSI@um@y*riTbTwMIuHy-v+-W@LQUBAA0^78ppOy@hdZ{NEAjrSftdVKlyt5+|t zUQof~Z@)L(zIE%~_4RizfA8|WhxZ>m9v)pjet7w4=pH`mFW;6|?{?2VcttPWxf~w! z)bPDW54)j%@@Tkx``K5~4OKn)=%cGwmv28sL3htTx+9NwZr^H$uibxuZaV+|aQXDv z<->qKet5Y%x^LaRyQ}=SzKZ@HKY8>3?H;|o+q-+0U%o{50Cnf`EA-yIJJO;(%UIgBVK)K_HMa;!i@r`;gnDe@c8skn8??C}E`Ri}@86C{-no2y zZ+Ng6gxjT^1He7Z-@BNDI9f~vrc;LCN>3QMJ4GH;bI1BkIL%!NXz6uPz-X*JbC{rw}FfCVIN~7w$<*JJmR$Xq5xUOepcCM}> zCAzv>l(%DfQ|R)>P34-R9Y{EmL(?$&P0AduNlDZ-%{1tS79djBt|)dRG%vL4&zuaO z(XQX5UB8$N^b!Z*dxehkBfGj*t>n)6FuvdJdC)C^JIw=aw*2jWYsp$7{&8{~I*C}e zJ@?u<>Gc$2w_QppZNJrRcM$OD?&P|C3aC3wE7|b|0U<`X|b$Z&nK0{#G8hwUiDn?u=rXhzV z+wDhM2+VdxaVD}54@*(y0+?}ilP?P1l!}siKP^LwBHfe#U<-Vy)_qr$jd#aMD)xHMD)!@^RqQL8@?uZY^NdmKkI5tfz}6@ZEX|9|uQOM_b9{IQ?-C&C2Cixs?29I(3J+TpDIO(QR95J!$)PIz@KB`F(R&6p0IZiUI zI12GrXR>6IZqER)g;b@9+%pxx7GR~GWFAEsQmKPir$IooAY`FPOfxO5>Xfib z-%YJr86u=#(yB@4zr>1+6V@~5mVL^(Ws^>G*-xBX_N)Yyy&AS)=rauaNeL)>W|(p~ zZ=)?U>jeNdNWTm+luUG%P0HAKb((;M=q#JVNHH*}rg_|zVI<5l(AGMtU1jj`{e8*3 z?+@vs?OjSscy;W3FE-a z&ihnc6q?v4bHqZU4!IKoZ_j=D*pmGX%a%Ux6SO>03_Jt8dXUX2wr$?B)h!olR%j<@ zLui$NhtqIWaa`z@O<*-gehebyUC5+7igGk&Iq!nFBJs=zFyt*~ha_4k_5#lgGd5a4 zqb7_sh1=_)6|OAe2nr_zgJ&vU3zx}6dV5@g!qv*|+TqV}i!AmsE5&|Dof5^qP1P8B zdxF^sI~UzS;mbr=blEmq;O)7kwvcGU9`{WAWR(ifR2~&@g)W6Yy{tg8YXxP5%t?1uMJv5KOt@Bpe=@AXw31@}qEMdtM)7@LF8 zR{9P-jgA~&!Ie*>R>2TDiw-IX%H{4vFg81f0Ol^>K033DbT>v9TP`=a9C$Ou^V}(f zt34e>i#>LAZ}9CwZ;I$?lq@X{l~o98Ws`-s$Gss0;qwp? z!D0X9ARPWD5zMvl=DXM5|JlNuf?S3gY@_AOMYIqQ?O6Nim5ksm5?aEt1uVCyG4(9V z`c$lDeraeeqmC5~f%3c{3rw12-xSzfUuFuAf>z!BJUXJNWda_N%?ERsXcMXsZxbk=OIf#3R~;4l|v{fnQ?@R#))bq z;@c?wRr<;lUI#Dx)QX+n2&*Q26>vc(eZfsVwPIC@+{H@_$=RH?nmmpUUSwKIm`6#g zDqFQ?3d1-r5iWR?dH3IT8abZ^5YT>Wg-<^5-}!8P$zQup zUhw!5@@y@h)|nA^P8Y{-iGA0~%tKTq>jf`gvdZloTNGL9;F>>2TD#12a+`vb0@o8Z z82V(+!s6BCqcV&zGtUvi&{H+Dh3ir+fg;i)fkVxvnMD{nZI!VFBGOYUVRwX~(^hFz z#&t8hLvg3R5GX!t!n!nO=@63MAQDJN0)L*>2ach zEDEPAo!-<#wmpQ+O&!j6#wlC8HXB@+7Z0v^v?@y4KhMA^V}Yr&gkR6?Aea8G2`;^bnegh{&;Ano!>a5kH=-hJ7DT24oLlmK#I2xUdHh8JsO9=XmI(-Rk zg|K1I{pkgus9b^$B6l0;KwV+*soG!qbZ;oJB$1X%7;)Sx%AylyV%gbpvIgZ)0QdF|(s6DY|mu^obG>5SjB1uyx zJBnJ0E{X^v<8aQS~|{Xi+SYMvmN^bGVs8NJ+P}$!&D2s0h7` zrac9$(CxlZb0HIs$aC7kwDln3$gNn(Ke>xiG;#@wB9`m8BH+l-VJM!lhfpvwflf;H z>P%4BlSa&|f0}~#h(;#h5wY9=FaF~LoWbWH-)B=p9_3Z!DeMX44@d)=h=`Yqf{{x! zDPS2X-NE}v&EP#u^&|E|E*sL@b4#d5Q%^g1BS$V_PvoLz(#7D<;ND6dL}x6?3zDG8 z-j5Magd4f#(41!mP%JV*o+6g(^M~-{s3)DZKDnL*09)`8X5V z#u*cDL!Lt$s&v0Y2vM~Z;fM%fs^X$3pIhaT3q!;f0h)A%GT$E}gR0M%TtP9xv}Kiw zK|~IxmW3HIl@H1ky~~}YEp3EF=+$ z9~M)dSrhc~jN2l`lB1(>6)FBXfueBem$+2UB| zx`;qfGWLMeRcBB+2QkwgD2rrOQKK*=kD)qG5#$(V(gQ_0w|YP#1kF;#qv;X5SeZ-piBDCkMn9M4;nTTJ zlrw!qbgmO6s^FyG3;~ETn(;!Xg3V0}$@eN)+T?9x#tr*RV(r4~B(t(e!k=L;TzVO7 za>)U&MJBy&%UawbkzUs-O-vPQuiXZ^hWAYaQC_w!AmT04?koi)x~;UCtZKy}v`0L3 z;(@s~`bZAiYl1Nk<|x^|M`yM@N=ENdAF@(y#eO~F zoR0-r^v7ebqG_tFoRB#3A;fF}j!35j&PNzZ7UY3Fbw_OkDaf2uoq?=mpp~}o=SCHb zcXWuOI97+1>@<}!iLYa9pvb89M^}(E-TFjRE zX!k1~salID1zF6j+9vI~=Qv2+o4ZLpurX8XY*7VSsIb8yMPoJ^3HvmAbG!{~OUy>Y zk(6vGMKJqMsJ|;Sp7l9 zj}sAABiZJ?KHRE0)H&X&SoqFsi(l2oY+9S|yzrf`O#$mA?&fv2kb*3H=WV|8!gt>0 zJ1_YkUgv)($T4TqWP;G_%yguHqYnlDL&3+!z-C7mVM7_;PUO36K&mt!w zIri>thH8bOTAQI-VW@UzZq=v)QrR@d!Jc9XrQvv(9G6PS~-tS*jD3>TH(kkSc?j?QE9nB&)ZxS*jC#uG4|t znHoAMy#!gOS*u#neaWwGtSB8FqP8|m#p9=N5SwjWZw(f_cq!0 zLiW8)_Psvar#i&7D4^Ni7BIbtklv>EUg*8I>AjbOI=xQmQvHe~>1}T4g&TTKPRN$7 zhZrE7ZDYCzp>wTi3HG+>*+*X=DB7Y1ISJpxKDBB=!_*;Mf>W(Qti9a6(A(B+FT~p0 zdvp&fr7jS-nYx(gGM+UbY?2zpnjds_p=ztM3RJONnlsq`t3lN3fs>N5Ezuf@BGizCE8fz`W5)%!E`%5i(|AGsqc1L>>E1^USM}7p60Tk zoR=C;lTPfUH9ZkJHEmJ80#69f?QGv9$^{=vVYU{mh{v*!dtukdiKjcd%=V(hxk77k z*2ERKrwb&B7gstGea{v4riF5rM0l>W$I3B$+aZ9Q7~a?MREY~}f{U1UROmYgbiM2r zuFxiiIZ)h9z=+uX0|1bep~BY3ToIFzN?WOMrD!#H+5;(L%3Y~fL=B|W*Y@c0c-;gg zLt86tCP3=;)@?DWejl%CIog|&qZ8jWZ%12;aq-x;JKC11JH`afqwU&v$AJwfq%zr@ zP{pmQvQ@#(cs{K8sp6F>bTHejkJp=2`ZTSYpDHpywK6|d+`=R?BHzL)w#AEbTNG6BK8?zbBDfm#P59Q%-bw2?pS8YlOpT|G z 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 literal 0 HcmV?d00001 diff --git a/Make486.sh b/Make486.sh new file mode 100755 index 0000000..4b87c48 --- /dev/null +++ b/Make486.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd Boot486 +./make.sh diff --git a/Run486.sh b/Run486.sh new file mode 100755 index 0000000..6985be4 --- /dev/null +++ b/Run486.sh @@ -0,0 +1,4 @@ +#!/bin/sh + +cd Boot486 +./run.sh diff --git a/System/Mod486/Init.odc b/System/Mod486/Init.odc new file mode 100644 index 0000000000000000000000000000000000000000..27fccbb4a0d2970ce6402cbddc3e337391885ffd GIT binary patch literal 4856 zcmds5&2Jk;6yE>>445x*K%54HkW-AYH@2HPtwgXlwMF8!)=sR#$!&(j%4RpL*OVfJ zPNu@4q{4dw1I*-Cz=LI?@OCE*kH|IBce}lzgA3(*siM_Q*5_1}7DGtMJ-Q zvgvu7H;B7MTAfXA6~I1pu6KLDgmW*CqDf2#kfh+C2+nAc>uv!Ad5aVZWY}?fB23M+ zK;9<>@-Em(lFX~Rq*qn*vX}I-6EBtgb^x3qQ7kPo8OvpD5Rc>8^wASn;6P25lK)E< zc}zwk2c-CEL_aGLp9UoYE6ey!li)bM?y%97+uQU=JUOOKvhDU@qzwT;4mo9-lm|54 z0w9LQ2A!&Og7HnCf@cn)Nb{N;fSQngV5yhXWT+nT;{WnGg^f72fIwMwOA+klTtS#f<078-1l$TqR2 zUMa0}1}LeFuB_Q58|yBodPJ;OG8jV(tPzvuMY7qbPHDj#lA==5l5lSOX^1A?a5w&Dy;WuzPh{3LTpC6z~>7tNKJ?Ze1PG#PBNqt)UwI@Ihkg>eQxMq7t~ zYS^Ix-l{^sm+UYKRtTwwIT(dNsv)98sod3sD(4Sd3DSL$a~6 zegUA5u+P)hE*eo;zb{prEj*ah<(60^Xm+D2o9Q)WB%#_b4%@6S^dM8oWMlg3=`{SA1^B4z}|`@ zalwG+byb;`7cL;OR1(wBCD#wH;Tatsyn;}k70$|=NkXi|TSP`ek=D+i6yCqV7jGhd z;WEF8NO1=79iQK^uq%p0A#3O8E1zef@UajyLKj^@yp2x$)&UBY-#N%vf38?R!Br9} zr1Es0M_c82@b!f>eBr)j;d}MhPps$fTOX*GQ)aGTmQLb}VX=oL{p|bCt)IXA!TRQ( Q=h%Dl(a{?@Yo1Bp#=>Hq)$ literal 0 HcmV?d00001 diff --git a/System/Mod486/Kernel.odc b/System/Mod486/Kernel.odc new file mode 100644 index 0000000000000000000000000000000000000000..0930a934abbc3460d332291c68553683af90ba9a GIT binary patch literal 84020 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 QfA-g(%oJbz)tQ<97eNZL+yDRo literal 0 HcmV?d00001 -- 2.29.2