素晴らしいものを発見!まずはeBabbage-2ndをダウンロード。BIOSがなくて一瞬とまどうが、MON.ROMを用意してあげれば良いと理解する。
http://homepage3.nifty.com/takeda-toshiya/babbage/index.html
アセンブラの使い方は以下を参考にしながら、「Z-80プログラミング実習」を見ながらBIOSを作成する。
http://randy3.hp.infoseek.sk/zaurus/wla/index.shtml
wla-z80.exe -o MON.ASM
wlalink.exe -v MON.LNK MON.ROM
copy MON.ROM <babbage2nd.exe 実行パス>
;**************************************** ;* * ;* Babbage 2nd Monitor Program * ;* (c) 1986 * ;* Original by Takafumi Aihara * ;* * ;* regenerated Z80 assembly source * ;* by tanam * ;* * ;* 20110618 Initial Release * ;* * ;**************************************** .MEMORYMAP SLOTSIZE $200 SLOT 0 $0000 DEFAULTSLOT 0 .ENDME .ROMBANKMAP BANKSTOTAL 1 BANKSIZE $200 BANKS 1 .ENDRO .EQU STACK: $1800 .EQU DA: $17C0 .EQU AL: DA: + 1 .EQU ST: AL: + 2 .EQU PAD: $20 .EQU PAC: $21 .EQU PBD: $22 .EQU PBC: $23 .ORG $0000 JP MON .ORG $0040 TBL1: .db $BF, $86, $DB, $CF, $E6, $ED, $FD, $87, $FF, $E7, $F7, $FC, $B9, $DE, $F9, $F1 TBL2: .db $4F, $87, $BC, $0F, $07, $00, $01, $00, $00, $00, $00, $10, $00 .ORG $0070 MON: LD SP,STACK: LD A,$17 LD I,A IM 2 ; LD HL,TBL2 LD BC,$0321 OTIR LD BC,$0223 OTIR ; LD DE,$17BC LD BC,$0008 LDIR IN A,(PAD:) ; EI LD DE,TBL1 LD C,PBD: L2: LD A,(ST:) BIT 5,A JP NZ,L0 LD HL,(AL:) LD A,(HL) LD (DA:),A LD HL,DA: LD B,$01 L3: LD A,B AND $2A JP NZ,L1 LD A,(HL) AND $0F L4: CALL CONV RLC B BIT 6,B JP NZ,L2 JP L3 L1: LD A,(HL) AND $F0 INC L RRCA RRCA RRCA RRCA JP L4 L0: RES 5,A LD (ST:),A XOR A OUT (PBD:),A LD HL,(AL:) JP (HL) ; CONV: PUSH AF PUSH DE OR E LD E,A LD A,(DE) OUT (PBD:),A AND $7F OUT (PBD:),A OUT (C),B CALL TIME POP DE POP AF RET ; TIME: PUSH AF PUSH BC LD BC,$288 T1: DEC BC LD A,B CP $0 JP NZ,T1 POP BC POP AF RET ; .ORG $0100 PUSH AF PUSH BC PUSH DE PUSH HL IN A,(PAD:) LD B,A LD HL,ST: BIT 7,(HL) JP NZ,DAIN BIT 6,(HL) JP NZ,ADIN CP $10 JP Z,GO CP $11 JP Z,ADL CP $12 JP Z,DAL CP $13 JP Z,ADINC RT: POP HL POP DE POP BC POP AF EI RETI ; GO: LD A,(ST:) SET 5,A LD (ST:),A JP RT ; ADL: LD A,$4F L5: LD (ST:),A JP RT DAL: LD A,$83 JP L5 ; ADIN: BIT 4,A JP NZ,RT BIT 3,(HL) JP NZ,ADIN1 BIT 2,(HL) JP NZ,ADIN2 BIT 1,(HL) JP NZ,ADIN3 LD DE,AL: RES 6,(HL) RES 0,(HL) L6: CALL MIXR JP RT ADIN3: LD DE,AL: RES 1,(HL) L7: CALL MIXL JP RT ADIN2: LD DE,AL:+1 RES 2,(HL) JP L6 ADIN1: LD DE,AL:+1 RES 3,(HL) JP L7 DAIN: BIT 4,A JP NZ,RT BIT 1,(HL) JP NZ,DAIN1 LD DE,DA: RES 7,(HL) RES 0,(HL) CALL MIXR L8: LD HL,(AL:) LD (HL),A JP RT DAIN1: LD DE,DA: RES 1,(HL) CALL MIXL JP L8 MIXR: LD A,(DE) AND $F0 L9: OR B LD (DE),A RET MIXL: RLC B RLC B RLC B RLC B LD A,(DE) AND $0F JP L9 ADINC: LD HL,(AL:) INC HL LD (AL:),HL JP RT ; END