Wednesday, 1 August 2018

N88 Basic 続き

結論的にいうと敗れ去りました。

Keyspan と特製ケーブルでN88 Basicに繋げて、

  N88側では、
    run "menu" からメモリスイッチで232Cを9600に設定
    load "com:n81ns"
  macOS 側では
    nkf -c diskbios.bas| jerm -b 9600 -f none /dev/cu.KeySerial1

で、以下のプログラムをloadして実行。で、8inch floppyにアクセスして、field に読み込むまではできました。

が、値はすべてゼロ。どうも、1Sを読む方法はないみたいだな。FDC叩けばいくかも知れんが、そうなると結構めんどうな。

いや、これでも十分面倒だったし〜 (最後の999は、loadをfailさせて終了させるため)


10 '
20 ' call disk bois
30 clear ,&H7D00
40 def seg=&H7D00
50 diskbios=0
55 max=&h0
60 '
70 for adr=max to max+&h4a
80 read byte : poke adr,byte
90 next adr
100'
110'
120'
125 open "test.dat" as #1
130 field #1, 255 as d$,1 as e$
140 '; call $buf,length,mode,selen+cyl,head+sec
150 dv%=2
160 cl%=0
170 h%=0
180 s%=0
190 ax%=&H3610+dv% : ' mode
200 bx%=128 : ' length
210 cx%=0*256+cl%
220 dx%=h%*256+s%
230 call diskbios(dx%,cx%,bx%,ax%,d$)
240 print "return=",hex$(ax%)
245 ot$=""
250 for i=1 to len(d$)
260 ot$=ot$+hex$(asc(mid$(d$,i,1)))+" "
270 if (i mod 16=0) then print ot$ : ot$ = ""
290 next i
295 print ot$
300'
310 data &H8B,&H77,&H12 :' mov si, [bx+18]
320 data &H8E,&HC6 :' mov es, si
330 data &H8B,&H77,&H10 :' mov si, [bx+16]
340 data &H26,&H8B,&H14 :' mov dx, [es:si] ; head + sector
350 data &H8B,&H77,&H0E :' mov si, [bx+14]
360 data &H8E,&HC6 :' mov es, si
370 data &H8B,&H77,&H0C :' mov si, [bx+12]
380 data &H26,&H8B,&H0C :' mov cx, [es:si] ; sector len + cynlinder
390 data &H8B,&H77,&H06 :' mov si, [bx+6] ; ax
400 data &H8E,&HC6 :' mov es, si
410 data &H8B,&H77,&H04 :' mov si, [bx+4]
420 data &H26,&H8B,&H04 :' mov ax, [es:si] ; mode
430 data &H56 :' push si
440 data &H06 :' push es
450 data &H8B,&H77,&H02 :' mov si, [bx+2]
460 data &H8E,&HC6 :' mov es, si
470 data &H8B,&H37 :' mov si, [bx]
480 data &H26,&H8B,&H2C :' mov bp, [es:si] ; pointer to strincg descriptor
490 data &H8B,&H6E,&H02 :' mov bp, [bp+2] ; string offset
500 data &H8B,&H77,&H0A :' mov si, [bx+10] ; bx
510 data &H8E,&HC6 :' mov es, si
520 data &H8B,&H77,&H08 :' mov si, [bx+8]
530 data &H26,&H8B,&H1C :' mov bx, [es:si] ; length
540 data &HBE,&H60,&H00 :' mov si, 60H ; defseg &60H
550 data &H8E,&HC6 :' mov es, si
560 data &HCD,&H1B :' int 1bh
570 data &H25,&HFF,&H00 :' and ax, 0FFH
580 data &H07 :' pop es
590 data &H5E :' pop si
600 data &H26,&H89,&H04 :' mov [es:si],ax ; result
610 data &HCF :' iret
999


http://island.geocities.jp/cklouch/column/pc98bas/bios/disk.htm

No comments: