From a036a8bce4e254afb798e87dd1fce8fed8d0cb5f Mon Sep 17 00:00:00 2001 From: Lacanoid Date: Wed, 12 Oct 2022 16:03:29 +0200 Subject: [PATCH] kmon.s split into smaller parts --- boot/autostart64.128.o | Bin 3042 -> 3042 bytes boot/autostart64.o | Bin 3376 -> 3376 bytes boot/bootsect.128.o | Bin 3926 -> 3926 bytes run64.d81 | Bin 819200 -> 819200 bytes s/issue,s | 10 ++- tools/dos.s | 187 +++++++++++++++++++++++++++++++++++++++++ tools/pip.128.o | Bin 11531 -> 11531 bytes tools/ted.cfg | 43 ++++++++++ 8 files changed, 236 insertions(+), 4 deletions(-) create mode 100644 tools/dos.s create mode 100644 tools/ted.cfg diff --git a/boot/autostart64.128.o b/boot/autostart64.128.o index 61f89a2d9abcc45fa9bd3e7dd1cb192c0462fadb..500b8a37b8df6070e310bd8386997268f153f82d 100644 GIT binary patch delta 14 WcmaDP{z!a63iG5%vp1$!a{~Y|(FR8V delta 14 WcmaDP{z!a63iGoyGd8AIa{~Z0ss^$E diff --git a/boot/autostart64.o b/boot/autostart64.o index a98c00100ad89885ebe7d3781f686846a5083b3b..74baf505bff93d6ce0c824da6649839df2321682 100644 GIT binary patch delta 14 WcmdlWwLxk^3iG5%vp1%n~mMfa#lKb|g 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 delta 5377 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 BeG32p diff --git a/s/issue,s b/s/issue,s index 4697346..4a07b56 100644 --- a/s/issue,s +++ b/s/issue,s @@ -1,7 +1,9 @@ -Q: How much does it cost to ride the Unibus? -A: 2 bits. +You will get what you deserve. -Training is everything. The peach was once a bitter almond; cauliflower is -nothing but cabbage with a college education. +The true Southern watermelon is a boon apart, and not to be mentioned with +commoner things. It is chief of the world's luxuries, king by the grace of God +over all the fruits of the earth. When one has tasted it, he knows what the +angels eat. It was not a Southern watermelon that Eve took; we know it because +she repented. -- Mark Twain, "Pudd'nhead Wilson's Calendar" diff --git a/tools/dos.s b/tools/dos.s new file mode 100644 index 0000000..6d1fea9 --- /dev/null +++ b/tools/dos.s @@ -0,0 +1,187 @@ +; ----------------------------------------------------------------------------- +; load, save, or verify [LSV] +LD: LDY #1 ; default to reading from tape, device #1 + STY FA + STY SA ; default to secondary address #1 + DEY + STY FNLEN ; start with an empty filename + STY STATUS ; clear status + LDA #>STAGE ; set filename pointer to staging buffer + STA FNADR+1 + LDA #W-R_!aQlx?2YM5bO0~525A5Q delta 14 VcmeB<>W-R_!u)K_jE(6_bO17s2Gjrm diff --git a/tools/ted.cfg b/tools/ted.cfg new file mode 100644 index 0000000..b7199e0 --- /dev/null +++ b/tools/ted.cfg @@ -0,0 +1,43 @@ +FEATURES { + STARTADDRESS: default = $1001; +} +SYMBOLS { + __LOADADDR__: type = import; + __EXEHDR__: type = import; + __STACKSIZE__: type = weak, value = $0800; # 2k stack + __HIMEM__: type = weak, value = $FD00; +} +MEMORY { + ZP: file = "", define = yes, start = $0002, size = $001A; + LOADADDR: file = %O, start = %S - 2, size = $0002; + HEADER: file = %O, define = yes, start = %S, size = $000D; + MAIN: file = %O, define = yes, start = __HEADER_LAST__, size = __HIMEM__ - __MAIN_START__ - __STACKSIZE__; +} +SEGMENTS { + ZEROPAGE: load = ZP, type = zp; + LOADADDR: load = LOADADDR, type = ro; + EXEHDR: load = HEADER, type = ro; + STARTUP: load = MAIN, type = ro; + LOWCODE: load = MAIN, type = ro, optional = yes; + CODE: load = MAIN, type = ro; + ONCE: load = MAIN, type = ro, optional = yes; + RODATA: load = MAIN, type = ro; + DATA: load = MAIN, type = rw; + INIT: load = MAIN, type = bss; + BSS: load = MAIN, type = bss, define = yes; +} +FEATURES { + CONDES: type = constructor, + label = __CONSTRUCTOR_TABLE__, + count = __CONSTRUCTOR_COUNT__, + segment = ONCE; + CONDES: type = destructor, + label = __DESTRUCTOR_TABLE__, + count = __DESTRUCTOR_COUNT__, + segment = RODATA; + CONDES: type = interruptor, + label = __INTERRUPTOR_TABLE__, + count = __INTERRUPTOR_COUNT__, + segment = RODATA, + import = __CALLIRQ__; +}