エミュを使ってIPLプログラミングもどき (2)(PC-98のプログラム作成に関するエトセトラ)を参考に、gasとnp2kaiでやってみた。
asm1.S
.code16
.text
.globl _start
.org 0
_start:
mov $0x0a000, %ax
mov %ax, %es
mov $23, %cx
mov $0x2000, %di
add $80, %di
mov $0x0f1, %ax
POINT1:
push %cx
mov $30, %cx
rep stosw
pop %cx
add $100, %di
loop POINT1
mov $23, %cx
mov $0x087, %ax
mov $80, %di
POINT2:
push %cx
mov $30, %cx
rep stosw
pop %cx
add $100, %di
loop POINT2
POINT3:
jmp POINT3
.org +0x400
asでアセンブルして、How to generate plain binaries like nasm -f bin with the GNU GAS assembler?(stackoverflow)を参考にldとobjdumpでバイナリコードだけにし、初心者のためのPC-98プログラミング(1)【OS無しでbeepを鳴らす】(qiita)を参考にhoodと結合して、np2で起動する.TFDフロッピーイメージファイルにする。
#!/bin/sh
rm *.elf *.com *.tfd
i686-linux-gnu-as asm1.S -o asm1.elf
i686-linux-gnu-ld --oformat binary asm1.elf -o asm1.com
i686-linux-gnu-objdump -D -b binary -m i8086 asm1.com
cat asm1.com ../hood > asm1.tfd