From 9d2afd200cc6b5548a486e1ee43696616bccbe70 Mon Sep 17 00:00:00 2001 From: Virgil Dupras Date: Fri, 19 Jun 2020 20:09:51 -0400 Subject: [PATCH] pcat: implement (s) --- blk/811 | 4 ++-- blk/814 | 2 +- blk/815 | 6 ++++++ blk/817 | 5 ++--- blk/819 | 7 +++++-- blk/828 | 3 +-- recipes/pcat/xcomp.fs | 1 + 7 files changed, 18 insertions(+), 10 deletions(-) create mode 100644 blk/815 diff --git a/blk/811 b/blk/811 index 2208b65..0a95b33 100644 --- a/blk/811 +++ b/blk/811 @@ -4,7 +4,7 @@ ORG @ 0x25 + HERE ! ( bypass BPB ) L1 FSET ( start ) CLI, CLD, AX 0x800 MOVxI, DS AX MOVsx, ES AX MOVsx, SS AX MOVsx, STI, -AH 2 MOVri, DX 0 MOVxI, CH 0 MOVri, CL 2 MOVri, AL 3 MOVri, -BX 0 MOVxI, 0x13 INT, ( read sectors 2-4 of boot floppy ) +AH 2 MOVri, DX 0 MOVxI, CH 0 MOVri, CL 2 MOVri, AL 7 MOVri, +BX 0 MOVxI, 0x13 INT, ( read sectors 2-9 of boot floppy ) 0x800 0 JMPf, ORG @ 0x1fe + HERE ! 0x55 A, 0xaa A, diff --git a/blk/814 b/blk/814 index 298946d..af529d8 100644 --- a/blk/814 +++ b/blk/814 @@ -12,4 +12,4 @@ CODE 2>R ( 0xa9 ) CODE (n) ( 0xbf, number literal ) DI DX MOVxx, DI [DI] MOVx[], DI PUSHx, DX INCx, DX INCx, -;CODE ( END OF STABLE ABI ) +;CODE NOP, NOP, diff --git a/blk/815 b/blk/815 new file mode 100644 index 0000000..0c072b1 --- /dev/null +++ b/blk/815 @@ -0,0 +1,6 @@ +CODE (s) ( 0xd4, string literal, see B287 ) + DI DX MOVxx, ( IP ) + AH AH XORrr, AL [DI] MOVr[], ( slen ) + DX PUSHx, DX INCx, DX AX ADDxx, +;CODE +( END OF STABLE ABI ) diff --git a/blk/817 b/blk/817 index e6117fd..827852b 100644 --- a/blk/817 +++ b/blk/817 @@ -9,8 +9,7 @@ lblfind BSET CL AL CMPrr, IFZ, ( same len ) SI PUSHx, DI PUSHx, CX PUSHx, ( --> lvl 3 ) 3 ADDALi, ( header ) AH AH XORrr, DI AX SUBxx, - REPZ, CMPSB, + CLD, REPZ, CMPSB, CX POPx, DI POPx, SI POPx, ( <-- lvl 3 ) - IFZ, AL AL XORrr, ( Z ) RETn, THEN, + IFZ, RETn, THEN, THEN, - ( cont. ) diff --git a/blk/819 b/blk/819 index 7dd764e..d68111e 100644 --- a/blk/819 +++ b/blk/819 @@ -1,8 +1,11 @@ L3 BSET 4 A, 'B' A, 'O' A, 'O' A, 'T' A, PC 3 - ORG @ 1+ ! ( main ) - SP PS_ADDR MOVxI, - BP RS_ADDR MOVxI, + SP PS_ADDR MOVxI, BP RS_ADDR MOVxI, DI 0x08 MOVxm, ( LATEST ) +( HERE begins at CURRENT ) + BX RAMSTART MOVxI, + [BX] 0x04 ( HERE ) DI MOV[]+x, + [BX] 0x02 ( CURRENT ) DI MOV[]+x, SI L3 @ MOVxI, CALLn, lblfind @ RPCn, ( find ) IFZ, JMPn, lblexec @ RPCn, ( execute ) THEN, diff --git a/blk/828 b/blk/828 index bff76c1..a73f7e9 100644 --- a/blk/828 +++ b/blk/828 @@ -2,5 +2,4 @@ CODE EMIT AX POPx, AH 0x0e MOVri, ( print char ) 0x10 INT, ;CODE : FOO '0' 1 3 LSHIFT + EMIT ; -L1 BSET 3 A, 'F' A, 'O' A, 'O' A, -: BOOT 0x08 @ [ L1 @ LITN ] _find DROP EXECUTE BYE ; +: BOOT 0x08 @ LIT< FOO _find DROP EXECUTE BYE ; diff --git a/recipes/pcat/xcomp.fs b/recipes/pcat/xcomp.fs index 6b5ccc6..40d83c1 100644 --- a/recipes/pcat/xcomp.fs +++ b/recipes/pcat/xcomp.fs @@ -1,5 +1,6 @@ 0xff00 CONSTANT RS_ADDR 0xfffa CONSTANT PS_ADDR +RS_ADDR 0x80 - CONSTANT RAMSTART 750 LOAD ( 8086 asm ) 262 LOAD ( xcomp ) 270 LOAD ( xcomp overrides )