recipes/pcat: first steps into 8086!
This commit is contained in:
parent
4e18fafe46
commit
177750c928
2
blk/001
2
blk/001
@ -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
|
||||
|
||||
|
||||
|
||||
|
12
blk/731
12
blk/731
@ -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
|
1
blk/751
1
blk/751
@ -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 ;
|
||||
|
2
blk/752
2
blk/752
@ -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 ;
|
||||
|
2
blk/754
2
blk/754
@ -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! ;
|
||||
|
14
blk/811
Normal file
14
blk/811
Normal 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
16
recipes/pcat/Makefile
Normal 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
3
recipes/pcat/README.md
Normal file
@ -0,0 +1,3 @@
|
||||
# PC/AT recipe
|
||||
|
||||
Work in progress.
|
4
recipes/pcat/xcomp.fs
Normal file
4
recipes/pcat/xcomp.fs
Normal file
@ -0,0 +1,4 @@
|
||||
750 LOAD
|
||||
811 LOAD
|
||||
ORG @ 256 /MOD 2 PC! 2 PC!
|
||||
H@ 256 /MOD 2 PC! 2 PC!
|
Loading…
Reference in New Issue
Block a user