recipes/pcat: first steps into 8086!

This commit is contained in:
Virgil Dupras 2020-06-12 14:01:24 -04:00
parent 4e18fafe46
commit 177750c928
11 changed files with 47 additions and 16 deletions

View File

@ -10,7 +10,7 @@ MASTER INDEX
550 TI-84+ Recipe 580 RC2014 Recipe
620 Sega Master System Recipe
650 AVR assembler 730 8086 assembler
810 PC/AT Recipe

View File

@ -2,7 +2,7 @@
Work in progress. Load with "750 LOAD".
Test code at B731

12
blk/731
View File

@ -1,12 +0,0 @@
H@ ORG !
JMP8, L1 FWR8 ( start )
L2 BSET ( msg ) ," Hello, World!" 0 A,
L1 FSET ( start )
CLI, AH 0 MOVri, AL 2 MOVri, 0x10 INT,
SI L2 @ ( msg ) MOVrI, AH 0x0e MOVri,
L1 BSET ( loop ) LODSB, AL AL ORrr,
JZ, L2 FWR8 ( next ) 0x10 INT,
JMP8, L1 ( loop ) BWR
L2 FSET ( next ) AH 0 MOVri, 0x16 INT,
AH 0x0e MOVri, 0x16 INT, HLT,
PC ORG @ DUMP

View File

@ -1,4 +1,5 @@
VARIABLE ORG
CREATE BIN( 0 , : BIN(+ BIN( @ + ;
VARIABLE L1 VARIABLE L2 VARIABLE L3 VARIABLE L4
: AL 0 ; : CL 1 ; : DL 2 ; : BL 3 ;
: AH 4 ; : CH 5 ; : DH 6 ; : BH 7 ;

View File

@ -2,7 +2,7 @@
: SPLITB
256 /MOD SWAP
;
: PC H@ ORG @ - ;
: PC H@ ORG @ - BIN( @ + ;
: A, C, ;
( dst8 src8 -- modrm )
: MODRMrr 0x7 AND 3 LSHIFT SWAP 0x7 AND OR 0xc0 OR ;

View File

@ -12,5 +12,5 @@
DUP PC ( l l pc )
-^ 1- ( l off )
( warning: l is a PC offset, not a mem addr! )
SWAP ORG @ + ( BIN( @ - ) ( off addr )
SWAP ORG @ + BIN( @ - ( off addr )
C! ;

5
blk/810 Normal file
View File

@ -0,0 +1,5 @@
PC/AT Recipe
Work in progress.
811 Hello World boot

14
blk/811 Normal file
View File

@ -0,0 +1,14 @@
: _filler 510 H@ ORG @ - DO 0 A, LOOP 0x55 A, 0xaa A, ;
H@ ORG ! 0x7c00 BIN( ! ( BIOS loads boot bin at 0x7c00 )
JMP8, L1 FWR8 ( start )
L2 BSET ( msg ) ," Hello, World!" 0 A,
L1 FSET ( start )
CLI,
AH 0 MOVri, AL 2 MOVri, ( 80x25 BW video mode ) 0x10 INT,
SI L2 @ ( msg ) MOVrI, AH 0x0e MOVri, ( print char )
L1 BSET ( loop ) LODSB, AL AL ORrr, ( end of str? )
JZ, L2 FWR8 ( next ) 0x10 INT, ( print char )
JMP8, L1 ( loop ) BWR
L2 FSET ( next ) AH 0 MOVri, 0x16 INT, ( read kbd )
AH 0x0e MOVri, 0x10 INT, ( spit read char ) HLT, ( done )
_filler

16
recipes/pcat/Makefile Normal file
View File

@ -0,0 +1,16 @@
TARGET = boot.bin
BASEDIR = ../..
EDIR = $(BASEDIR)/emul
STAGE = $(EDIR)/stage
.PHONY: all
all: $(TARGET)
$(TARGET): xcomp.fs $(STAGE)
cat xcomp.fs | $(STAGE) > $@
$(STAGE):
$(MAKE) -C $(EDIR) stage
.PHONY: emul
emul: $(TARGET)
qemu-system-i386 -fda $(TARGET)

3
recipes/pcat/README.md Normal file
View File

@ -0,0 +1,3 @@
# PC/AT recipe
Work in progress.

4
recipes/pcat/xcomp.fs Normal file
View File

@ -0,0 +1,4 @@
750 LOAD
811 LOAD
ORG @ 256 /MOD 2 PC! 2 PC!
H@ 256 /MOD 2 PC! 2 PC!