pcat: use a far jump to boot into the OS
Unless I misunderstood, this is supposed to set CS. This would make all SREG have the same value. This allows us to remove BIN( offset from os.bin. I've tried booting to offset 0, but it didn't seem to work. Let's settle for 0x8000. 512kb of system RAM is way more than we need anyways.
This commit is contained in:
parent
507c2c12e7
commit
1a467efae1
3
blk/753
3
blk/753
@ -1,12 +1,13 @@
|
||||
: OP1 CREATE C, DOES> C@ A, ;
|
||||
0xac OP1 LODSB, 0xfa OP1 CLI, 0xfb OP1 STI,
|
||||
0xf4 OP1 HLT, 0xfc OP1 CLD, 0xfd OP1 STD,
|
||||
( no argument, jumps with abs addrs are special )
|
||||
( no argument, jumps with relative addrs are special )
|
||||
0xeb OP1 JMPs, 0xe9 OP1 JMPn, 0x74 OP1 JZ,
|
||||
: MOVri, SWAP 0xb0 OR A, A, ;
|
||||
: MOVxi, SWAP 0xb8 OR A, SPLITB A, A, ;
|
||||
: MOVsx, 0x8e A, SWAP 3 LSHIFT OR 0xc0 OR A, ;
|
||||
: INT, 0xcd A, A, ;
|
||||
: JMPr, 0xff A, 7 AND 0xe0 OR A, ;
|
||||
: JMPf, ( seg off ) 0xea A, SPLITB A, A, SPLITB A, A, ;
|
||||
: OPrr CREATE C, DOES> C@ A, 3 LSHIFT OR 0xc0 OR A, ;
|
||||
0x31 OPrr XORxx, 0x08 OPrr ORrr,
|
||||
|
6
blk/811
6
blk/811
@ -2,9 +2,9 @@ H@ ORG ! 0x7c00 BIN( ! ( BIOS loads boot bin at 0x7c00 )
|
||||
JMPs, L1 FWRs ( start )
|
||||
ORG @ 0x25 + HERE ! ( bypass BPB )
|
||||
L1 FSET ( start )
|
||||
CLI, CLD, AX AX XORxx, DS AX MOVsx, ES AX MOVsx,
|
||||
CLI, CLD, AX 0x800 MOVxi, DS AX MOVsx, ES AX MOVsx,
|
||||
SS AX MOVsx, SP 0xffff MOVxi, STI,
|
||||
AH 2 MOVri, DX 0 MOVxi, CH 0 MOVri, CL 2 MOVri, AL 1 MOVri,
|
||||
BX 0x8000 MOVxi, 0x13 INT, ( read 2nd sector of boot floppy )
|
||||
BX JMPr,
|
||||
BX 0 MOVxi, 0x13 INT, ( read 2nd sector of boot floppy )
|
||||
0x800 0 JMPf,
|
||||
ORG @ 0x1fe + HERE ! 0x55 A, 0xaa A,
|
||||
|
Loading…
Reference in New Issue
Block a user