ebayで注文したブレッドボード用の接続コードがまだ届かず Z80 と PIC24FJ64GA004 のインターフェース部分の実験ができず待ちの状態なのでCP/MのBIOS部分の検討を少しやってみました。
インテル系のニーモニックはあまり好きじゃないのでザイログ系のニーモニックがフルに使えるMACRO-80(m80.com)をCP/Mエミュ上で使うことに決めました。
何十年かぶりの m80・・・^^
avrCPM用のbios.asmを基にしてザイログニーモニックへの変換はすぐにできましたが、ディスクパラメータ生成のためのmac.com用のマクロがそのままでは動かず、自力でm80用に変換しようかとも思ったけどネットで探したら見つかった^^
bios.macの先頭部分抜粋
MSIZE EQU 62 ;size of available RAM in k
BIAS EQU (MSIZE-20) * 1024
CCP EQU 3400H+BIAS ;base of cpm ccp
BDOS EQU CCP+806H ;base of bdos
BIOS EQU CCP+1600H ;base of bios
CDISK EQU 0004H ;current disk number (0 ... 15)
IOBYTE EQU 0003H ;intel iobyte
BUFF EQU 0080H ;default buffer address
RETRY EQU 3 ;max retries on disk i/o before error
CR EQU 13
LF EQU 10
NSECTS EQU ($-CCP)/128 ;warm start sector count
ASEG
ORG 100H
.PHASE BIOS
.Z80
JP BOOT
WBOOTE:
JP WBOOT
JP CONST
JP CONIN
JP CONOUT
JP LIST
JP PUNCH
JP READER
JP HOME
JP SELDSK
JP SETTRK
JP SETSEC
JP SETDMA
JP READ
JP WRITE
JP LISTST
JP SECTRAN
SIGNON:
DB CR,LF
DB MSIZE/10+'0'
DB (MSIZE mod 10) + '0'
DB 'k CP/M Version 2.2 COPYRIGHT (C) 1979, DIGITAL RESEARCH'
DB CR,LF,0
BOOT:
LD SP,BUFF
LD HL,SIGNON
CALL PRMSG
XOR A
LD (IOBYTE),A
LD (CDISK),A
JP GOCPM
|
あちこちいじっていますが、アセンブルが通りました。
超久々にm80でザイログニーモニックソースのアセンブル
|
|
ディスクパラメータも想定通りに展開されています。^^
ディスクパラメータ生成
; Name spt bls dks dir cks off
dpb dpb_A, 64, 2048, 972, 256, 0, 1
F38B + dpb_A: ddw %64,<;sec per track>
F38B 0040 + dw 64 ;sec per track
F38D 04 + db 4 ;block shift
F38E 0F + db 15 ;block mask
F38F 00 + db 0 ;extnt mask
F390 03CB + dw 971 ;disk size-1
F392 00FF + dw 255 ;directory max
F394 F0 + db 240 ;alloc0
F395 00 + db 0 ;alloc1
F396 0000 + dw 0 ;check size
F398 0001 + dw 1 ;offset
dpb dpb_B, 64, 2048, 976, 256, 0, 244
F39A + dpb_B: ddw %64,<;sec per track>
F39A 0040 + dw 64 ;sec per track
F39C 04 + db 4 ;block shift
F39D 0F + db 15 ;block mask
F39E 00 + db 0 ;extnt mask
F39F 03CF + dw 975 ;disk size-1
F3A1 00FF + dw 255 ;directory max
F3A3 F0 + db 240 ;alloc0
F3A4 00 + db 0 ;alloc1
F3A5 0000 + dw 0 ;check size
F3A7 00F4 + dw 244 ;offset
|
Z80とPIC24FJ64GA004とのインターフェースに関してはこれから細かく考えますが、boot時のシステム読込みはSDカードからではなく、PIC内のフラッシュから展開した方が良さそう。
あと、Z80とPIC間のインターフェースでZ80側のNMIもリセットも使わない方法を実験予定です。うまく行けばI/Oが1bit節約できる ^^
[TOP] [ 前へ ] 連載記事
[ 次へ ]
posted by skyriver at 01:50|
Comment(0)
|
Z80
|

|