diff --git a/Makefile b/Makefile index 9c707cc..cdd9f8d 100644 --- a/Makefile +++ b/Makefile @@ -1,6 +1,6 @@ PPC=powerpc-linux-gnu DISK.APM: kernel.elf bootinfo.txt kpartx.sh - dd bs=8M count=2 if=/dev/zero of=DISK.APM + dd bs=512K count=2 if=/dev/zero of=DISK.APM parted DISK.APM --script mklabel mac mkpart primary hfs+ 32.8KB 100% sudo chmod +x kpartx.sh sudo ./kpartx.sh @@ -14,11 +14,17 @@ bootinfo.txt: load.fs echo "" >> bootinfo.txt cat load.fs >> bootinfo.txt echo "" >> bootinfo.txt -kernel.elf: boot.elf boot1.elf +kernel.elf: boot.elf boot1.elf $(PPC)-ld -Ttext=0x200000 boot.elf boot1.elf -o kernel.elf boot1.elf: boot.c $(PPC)-gcc -c boot.c -o boot1.elf boot.elf: boot.S $(PPC)-as -c boot.S -o boot.elf clean: - rm DISK.APM *elf *txt + rm DISK.APM *elf *txt +run: + qemu-system-ppc DISK.APM +debug: + qemu-system-ppc DISK.APM -d in_asm +all: + make clean && make && make run diff --git a/boot.S b/boot.S index 1e7a457..d469a33 100644 --- a/boot.S +++ b/boot.S @@ -1,4 +1,4 @@ .globl _start _start: addi 1,1,1 -b begin +b begin diff --git a/boot.c b/boot.c index 8655e62..df4154e 100644 --- a/boot.c +++ b/boot.c @@ -1,4 +1,11 @@ void begin(void) { - for(;;){}; + unsigned char* addr = 0x7FFFFFFF; + unsigned char* noise = 0xFFEE0000; + while (addr < 0x80500000){ + *addr = *noise; + addr++; + noise++; + } + for(;;); } diff --git a/load.fs b/load.fs index 382de7d..f58dae9 100644 --- a/load.fs +++ b/load.fs @@ -1,7 +1,6 @@ -12 -12 -* -. ." Booting through OpenFirmware..." cr -." Loading: hd:,\boot\kernel.elf" cr +frame-buffer-adr +. +: rep dup 0 do i . loop ; +500 rep boot hd:,\boot\kernel.elf