|
えいやっと!今度はBASICのプログラムのアップロード・テスト。
BASICはTABを使ってないから、勝手に書式を書き換えられる心配はないかな?
でも半角スペースが2個以上続いたら1個になるとかないかな?
内容は、ん〜〜、ご覧のとおりです。いかにもデバッグ中でしょ?w
いつになったら満足に動くのでしょうね。←他人事モード
1000 '==================
1010 'SD3.BAS 1020 '================== 1030 SAVE "SD3.BAS" 1040 SCREEN0:KEY OFF:KEY1,"_SYSTEM"+CHR$(13) 1050 CLEAR 100,&HBFFF:DEFINT A-Z 1060 BLOAD "SD3.OBJ" 1070 DEFUSR0=&HC000:DEFUSR1=&HC003 1080 PRINT"R/W?";:I$=INPUT$(1):PRINT I$:I=INSTR("RrWw",I$):IF I=0 THEN 1080 1090 IF(I=1)OR(I=2)THEN GOSUB 1110:ELSE GOSUB 1270 1100 GOTO 1060 1110 ' 1120 N=0:INPUT "ARG1";N:POKE &HC00D,N 1130 N=0:INPUT "ARG2";N:POKE &HC00E,N 1140 N=0:INPUT "ARG3";N:POKE &HC00F,N 1150 D=USR0(0) 1160 PRINT "CMD_0RES:";RIGHT$("0"+HEX$(PEEK(&HC006)),2) 1170 PRINT "CMD_1RES:";RIGHT$("0"+HEX$(PEEK(&HC007)),2) 1180 PRINT "CMD16RES:";RIGHT$("0"+HEX$(PEEK(&HC008)),2) 1190 PRINT "CMD17RES:";RIGHT$("0"+HEX$(PEEK(&HC009)),2) 1200 PRINT "CMD17STB:";RIGHT$("0"+HEX$(PEEK(&HC00C)),2) 1210 PRINT 1220 FOR I=0 TO 511 1230 C=PEEK(&HC013+I):IF(C<32)OR(C=127)THEN C$="." ELSE C$=CHR$(C) 1240 PRINT C$; 1250 NEXT I 1260 PRINT:PRINT:RETURN 1270 ' 1280 'N=0:INPUT "ARG1";N:POKE &HC00D,N 1290 'N=0:INPUT "ARG2";N:POKE &HC00E,N 1300 'N=0:INPUT "ARG3";N:POKE &HC00F,N 1310 'N$="":INPUT "CHAR";N$:POKE &HC011,ASC(N$) 1320 D=USR1(0) 1330 'PRINT "CMD_0RES:";RIGHT$("0"+HEX$(PEEK(&HC006)),2) 1340 'PRINT "CMD_1RES:";RIGHT$("0"+HEX$(PEEK(&HC007)),2) 1350 'PRINT "CMD16RES:";RIGHT$("0"+HEX$(PEEK(&HC008)),2) 1360 'PRINT "CMD24RES:";RIGHT$("0"+HEX$(PEEK(&HC00A)),2) 1370 'PRINT "CMD24DRS:";RIGHT$("0"+HEX$(PEEK(&HC00B)),2) 1380 'FOR I=0 TO 511 1390 ' C=PEEK(&HC013+I):IF(C<32)OR(C=127)THEN C$="." ELSE C$=CHR$(C) 1400 ' PRINT C$; 1410 'NEXT I 1420 'PRINT:PRINT:RETURN 2000 FOR A1=0 TO &HFF 2010 FOR A2=0 TO &HFF 2020 FOR A3=1 TO &HFE STEP2 2030 POKE &H11,65 2040 D=USR1(0) 2050 NEXT A3 2060 NEXT A2 2070 NEXT A1 2080 END |
日記
-
詳細
コメント(2)
|
えいや!っと。まだデバッグ中ですが、アップロードのテストしてみました。
ここにアップロードするとTABが半角スペースに変換されるので、コメントなどに半角スペースを使わないようにしました。いったんメモ帳などにコピーして、半角スペースをTABに置換したら元に戻るかな?と。
【追記】やってみると、そう簡単にはいかないようで。
でもASM.COMにはかけられるかもしんまい。
内容について。
コマンドレスポンスは正常に戻りますが、実際に読み書きできていないようです。ダメじゃん?CLKの上げ下げに問題があるのかなと試行錯誤中であります。
;===========================
;SD3.ASM ; ;ASM_SD2.ASM_XCD/B->SD2.OBJ ;Use_J-PORT_B ;(C)KIKI_2015 ;=========================== PSGA EQU 0A0H ;PSG_R/W_ADRS
PSGW EQU 0A1H ;PSG_Write PSGR EQU 0A2H ;PSG_Read DO EQU 0 ;DO(#14-0)B-1pin CS EQU 2 ;CS(#15-2)B-6pin DIN EQU 3 ;DIN(#15-3)B-7pin CLK EQU 5 ;CLK(#15-5)B-8pin JPTB EQU 6 ;JPort-B(#15-6) BREAKX EQU 000B7H ;BIOS_Ctrl+STOP BDOS EQU 0F37DH ;BDOS_Call WAIT EQU 01H ;WaitLoop ORG 0C000H
MAIN:;----------
JP SDR ;USR0 =C000H JP SDW ;USR1 =C003H ;WORK---------- CMD0RS: DEFB 0FFH ;CMD0Res =C006H CMD1RS: DEFB 0FFH ;CMD1Res =C007H CMD16R: DEFB 0FFH ;CMD16Res =C008H CMD17R: DEFB 0FFH ;CMD17Res =C009H CMD24R: DEFB 0FFH ;CMD24Res =C00AH C24DR: DEFB 0FFH ;CMD24DR =C00BH STTBYT: DEFB 0FFH ;CMD17Start=C00CH USRAG1: DEFB 00H ;USR_ARG1 =C00DH USRAG2: DEFB 00H ;USR_AUG2 =C00EH USRAG3: DEFB 00H ;USR_AUG3 =C00FH USRAG4: DEFB 00H ;USR_AUG4 =C010H CHAR: DEFB 40H ;WritDATA =C011H C24STB: DEFB 0FEH ;CMD24STB =C012H BUFF: DEFS 512 ;BUFF =C013H CRC: DEFS 2 ;BUFF_CRC PSG0: DEFS 1 ;PSG_OrgData PSG1: DEFS 1 ;PSG_NewData CMD0: DEFB 40H,00H,00H,00H,00H,095H
CMD1: DEFB 41H,00H,00H,00H,00H,0F9H CMD16: DEFB 50H,00H,00H,02H,00H,00H CMD17: DEFB 51H CMD17A: DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 00H CMD24: DEFB 58H CMD24A: DEFB 00H DEFB 00H DEFB 00H DEFB 00H DEFB 00H SDR:;---------------------------
DI CALL INIT CALL CMD7S CALL REPSG EI RET SDW:;---------------------------
DI CALL INIT CALL CMD4S CALL REPSG EI RET INIT:;-------------------------------------------
LD A,15 ;SavePSG_Data OUT (PSGA),A IN A,(PSGR) LD (PSG0),A SET JPTB,A ;UseJPT-B LD (PSG1),A ;DummyCLK80------------------------------------
CALL CSH ;/CS=H CALL DINH ;DIN=H CALL CLKL ;CLK=L LD B,80 ;Dummy80CLK DMY80L: CALL CLKH CALL CLKL DJNZ DMY80L CALL CSL ;/CS=L CMD0S:;-------------------------------------------
LD HL,CMD0 ;CMD0_Start CALL CMDX LD B,80 ;Counter LD E,0FFH ;E:Temp. CMD0L: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (CMD0RS),A ;SaveCMD0Res CP 01H ;A=01H? JR Z,CMD0OK ;Yes->CMD0OK SLA E ;ShiftLeft DJNZ CMD0L LD DE,CMD0TO ;CMD0:TimeOut CALL PUTS RET CMD0TO: DEFM 'CMD_0:TimeOut' DEFB 0DH,0AH,'$' CMD0OK: LD DE,CMD0C ;CMD0:OK CALL PUTS JR CMD0E CMD0C: DEFM 'CMD_0:Done' DEFB 0DH,0AH,'$' CMD0E: CALL DMY8 CMD1S:;-----------------------------------------
LD B,080H ;Counter LD E,0FFH ;E:Temp. CMD1L1: LD HL,CMD1 CALL CMDX LD C,32 CMD1L2: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA RL E LD A,E LD (CMD1RS),A ;SaveCMD1RS CP 00H ;A=00H? JR Z,CMD1OK DEC C JR NZ,CMD1L2 DJNZ CMD1L1 LD DE,CMD1TO ;CMD1:TimeOut CALL PUTS RET CMD1TO: DEFM 'CMD_1:TimeOut' DEFB 0DH,0AH,'$' CMD1OK: LD DE,CMD1C CALL PUTS JR CMD1E CMD1C: DEFM 'CMD_1:Done' DEFB 0DH,0AH,'$' CMD1E: CALL DMY8 CMD6S:;CMD16-----------------------------------
LD HL,CMD16 ;CMD16_Start CALL CMDX LD B,80 ;Counter LD E,0FFH ;E:Temp. CMD6L: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (CMD16R),A ;SaveCMD16Res CP 00H ;A=00H? JR Z,CMD6OK ;Yes->CMD16OK SLA E ;ShiftLeft DJNZ CMD6L LD DE,CMD6TO ;CMD16:TimeOut CALL PUTS RET CMD6TO: DEFM 'CMD16:TimeOut' DEFB 0DH,0AH,'$' CMD6OK: LD DE,CMD6C ;CMD16:OK CALL PUTS JR CMD6E CMD6C: DEFM 'CMD16:Done' DEFB 0DH,0AH,'$' CMD6E: CALL DMY8 RET CMD7S:;CMD17=Read-----------------------------------
LD BC,4 LD DE,CMD17A LD HL,USRAG1 LDIR LD HL,CMD17 ;CMD17_Start
CALL CMDX LD B,80 ;Counter LD E,0FFH ;E:Temp. CMD7L: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (CMD17R),A ;SaveCMD17Res CP 00H ;A=00H? JR Z,CMD7OK ;Yes->CMD7OK SLA E ;ShiftLeft DJNZ CMD7L LD DE,CMD7TO ;CMD7:TimeOut CALL PUTS RET CMD7TO: DEFM 'CMD17:TimeOut' DEFB 0DH,0AH,'$' CMD7OK: LD DE,CMD7C ;CMD7:OK CALL PUTS JR CMD7E CMD7C: DEFM 'CMD17:Done' DEFB 0DH,0AH,'$' CMD7E: LD B,80 ;Counter
LD E,0FFH ;E:Temp. CMD7L2: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (STTBYT),A ;SaveStartByte CP 0FEH ;A=FEH? JR Z,CMD7RK ;Yes->CMD17RK SLA E ;SiftLeft DJNZ CMD7L2 LD DE,CMD7RO ;CMD17:ReadTimeOut CALL PUTS RET CMD7RO: DEFM 'CMD17:ReadTimeOut' DEFB 0DH,0AH,'$' CMD7RK: LD DE,CMD7RC ;CMD17:ReadStartOK CALL PUTS JR CMD7RE CMD7RC: DEFM 'CMD17:ReadStart' DEFB 0DH,0AH,'$' CMD7RE: LD HL,BUFF
LD BC,512 ;512Bytes CMD7L3: PUSH BC PUSH HL LD E,0FFH ;E:Temp. LD B,8 CMD7L4: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy DJNZ CMD7L4 POP HL LD (HL),E INC HL POP BC DEC BC LD A,B OR C JR NZ,CMD7L3 LD DE,CMD7EB ;CMD17:ReadEnd CALL PUTS JR CMD7ED CMD7EB: DEFM 'CMD17:ReadEnd' DEFB 0DH,0AH,'$' CMD7ED: CALL DMY8 ;CRC1 CALL DMY8 ;CRC2 CALL DMY8 RET CMD4S:;CMD24=Write-----------------------------------
LD BC,512 ;Fill_BUFF_Char. LD HL,BUFF LD A,(CHAR) LD E,A CMD4L1: LD (HL),E INC HL DEC BC LD A,B OR C JR NZ,CMD4L1 LD BC,4
LD DE,CMD24A LD HL,USRAG1 LDIR LD HL,CMD24 ;CMD24_Start
CALL CMDX LD B,80 ;Counter LD E,0FFH ;E:Temp. CMD4L2: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (CMD24R),A ;SaveCMD24Res CP 00H ;A=00H? JR Z,CMD4OK ;Yes->CMD24OK SLA E ;ShiftLeft DJNZ CMD4L2 LD DE,CMD4TO ;CMD24:TimeOut CALL PUTS RET CMD4TO: DEFM 'CMD24:TimeOut' DEFB 0DH,0AH,'$' CMD4OK: LD DE,CMD4C ;CMD24:OK CALL PUTS JR CMD4E CMD4C: DEFM 'CMD24:Done' DEFB 0DH,0AH,'$' CMD4E: LD HL,C24STB ;CMD24StartByte
LD BC,515 ;STB+512+CRC2Bytes CMD4L3: PUSH BC LD A,(HL) CALL CMDW8 INC HL POP BC DEC BC LD A,B OR C JR NZ,CMD4L3 CMD4L4: CALL CLKH
LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E LD (C24DR),A ;SaveCMD24DataRes AND 1FH ;Mask (00011111B) CP 05H ;A=05H?(00000101B) JR Z,CMD4WK ;Yes->CMD24WK SLA E ;ShiftLeft DJNZ CMD4L4 LD DE,CMD4WO ;CMD24:ReadTimeOut CALL PUTS RET CMD4WO: DEFM 'CMD24:TimeOut' DEFB 0DH,0AH,'$' CMD4WK: LD DE,CMD4WT ;CMD24:WriteOK CALL PUTS JR CMD4BS CMD4WT: DEFM 'CMD24:WriteOK' DEFB 0DH,0AH,'$' CMD4BS: LD B,0 ;Counter
LD E,0FFH ;E:Temp. CMD4L5: CALL CLKH LD A,14 OUT (PSGA),A IN A,(PSGR) CALL CLKL RRA ;bit0->Cy RL E ;Ebit0<-Cy LD A,E CP 00H ;A=00H(=Bussy) JR NZ,CMD4BK ;No->CMD24BK SLA E ;ShiftLeft DJNZ CMD4L5 LD DE,CMD4BO ;CMD24:BussyTimeOut CALL PUTS RET CMD4BO: DEFM 'CMD24:BussyTimeOut' DEFB 0DH,0AH,'$' CMD4BK: LD DE,CMD4FN ;CMD24:WriteFinished CALL PUTS JR CMD4WE CMD4FN: DEFM 'CMD24:Finish' DEFB 0DH,0AH,'$' CMD4WE: CALL DMY8 RET DMY8:;DummyCLK8-------------------
CALL CSH CALL DINH CALL CLKL LD B,8 DMY8L: CALL CLKH CALL CLKL DJNZ DMY8L CALL DINL CALL CSL RET CMDX:;CMD_Handler-----------------
LD A,(HL) ;CMD CALL CMDW8 INC HL LD A,(HL) ;ARG1 CALL CMDW8 INC HL LD A,(HL) ;ARG2 CALL CMDW8 INC HL LD A,(HL) ;ARG3 CALL CMDW8 INC HL LD A,(HL) ;ARG4 CALL CMDW8 INC HL LD A,(HL) ;CRC CALL CMDW8 RET CMDW8: LD B,8
CALL CLKL CMDW8L: CALL CLKH RLA CALL C,DINH CALL NC,DINL CALL CLKL DJNZ CMDW8L RET ;CS_H/L------------------
CSH: PUSH AF LD A,15 OUT (PSGA),A LD A,(PSG1) SET CS,A OUT (PSGW),A LD (PSG1),A POP AF RET CSL: PUSH AF
LD A,15 OUT (PSGA),A LD A,(PSG1) RES CS,A OUT (PSGW),A LD (PSG1),A POP AF RET ;CLK_H/L------------------
CLKH: PUSH AF LD A,15 OUT (PSGA),A LD A,(PSG1) SET CLK,A OUT (PSGW),A LD (PSG1),A CALL WLP POP AF RET CLKL: PUSH AF
LD A,15 OUT (PSGA),A LD A,(PSG1) RES CLK,A OUT (PSGW),A LD (PSG1),A CALL WLP POP AF RET ;DIN_H/L------------------
DINH: PUSH AF LD A,15 OUT (PSGA),A LD A,(PSG1) SET DIN,A OUT (PSGW),A LD (PSG1),A LD (DE),A POP AF RET DINL: PUSH AF
LD A,15 OUT (PSGA),A LD A,(PSG1) RES DIN,A OUT (PSGW),A LD (PSG1),A LD (DE),A POP AF RET REPSG:;RestorePSG---------------
PUSH AF LD A,15 OUT (PSGA),A LD A,(PSG0) OUT (PSGW),A POP AF RET WLP:;WaitLoop-----------------
PUSH AF PUSH BC LD B,WAIT WLPL: DJNZ WLPL POP BC POP AF RET ;MarkingForDebug----------
MK: PUSH DE LD DE,MARK CALL PUTS POP DE RET MARK: DEFM '.$' ;PutString(BDOS-CALL)-----
PUTS: PUSH AF PUSH BC PUSH DE PUSH HL LD C,9 CALL BDOS POP HL POP DE POP BC POP AF RET END
|
|
多少現実逃避気味の今日この頃。
先日触れた小型LCDを発作的にMSXのJポートに接続できるカタチにしました。左にあるのは例によって、サイズ比較見本のNATO5.56mm弾。以前「どこのご家庭でもお馴染みの」とサイズ比較見本に使って以来の習慣ですが、なんだか最近、冗談で済まなくなってきたような気がします。こういう冗談は自粛したほうがいいのでしょうかね? って、自粛する気は全然ないけれどw
逆挿し防止のためにLCDの土台部分に「LCD」と、ダイモのテープをかっこよく貼ろうと思ったら、肝心なときにダイモが見当たらない。だいなしやな。已む無く手書きと相成りました。ダイモが見つかったら上から貼ります。
ほいで作ってから気が付きましたが、小さく作り過ぎて多くのMSXでは筐体と干渉して挿せないのね(大笑い)。っていうか、挿せるのは1chipMSXぐらいじゃないかしら? そういうときこそコレの出番です。「MSXジョイスティックポート延長コネクタ」。こういう製品が、製品としてあるのがMSXの不思議な世界です。1個500円(内税)。
取り急ぎ紹介したくて写真を無断借用してしまいました。後ほど改めて使用願いを提出させていただきます。
さて、LCDのハードウエアは作ったものの、まだ1文字の表示もしていません。I2Cの勉強から始めないと。しかし、世の中にはこういうクールなことをやってのける人もいるのですなあ。PICを使っているそうですが処理速度以外はMSXも負けてないぞ! やってやれないことはない!かもしれないw
I2C-LCD (AQM0802A) Graph drawing technique with PIC
おっとその前にSDCをなんとかしないと(・∀・;)
|
|
バグ取りにいささか飽きてきたので、今日は部品取りしました。かつてヤフオクで入手したジャンクをバラしました。ハズせるところまでバラバラにするのは、一種の快感がありますね。猟奇的?ぼくだけかな?
そのうえで、しげしげと基板に見入ります。プリンタ端子などは労多くして功少なし。ハンダ大盛りでガッチリ固定されています。やはり狙うのはIC類。あまり足の多いのはウンザリしますが。下の写真はその一部。
Z80はいくつか持ってます。MSXに限らず、最期を看取ったPCはデスクトップ・ノートにかかわらずCPUを形見に残しています。ペンティアムとかセレロンとか。MZ-80Cの形見のZ80もどこかに眠っているはず。
YAMAHAのYZなんちゃらは、PSG(AY-3-8910)のちょっびっと改良版ですね。いつかいじってみたいものです。ソフトウエア的にではなく、ハードウエア的にパッチングで音色を変えるなんてことはできるのでしょうか?
右上のMCMなんちゃらは2KBのDRAMです。SONY HB-75のVRAMに使われていたものです。外してみたものの使い道が考え付きません。同じ基板にはでっかい8255も載っています。そのうち外してやろう。
三端子レギュレータ7812は外したものの在庫十分。10.738MHzの水晶発振子が2個入手できました。あとはもうどうでもいいものばかりですね。
部品ほしさに、ではなくて精神修養代わりに部品取りしています。ハンダを溶かして吸い込む道具も持っていますが、ハンダ吸い取り線(線というより網ですが)で、丁寧にぬぐっていくほうが精神修養っぽいですな。部品取りは冬のほうがいいです。夏は汗が基板に落ちないよう気をつかいます。
さて、お勤めが終わって明日からSDCとの格闘再開。なんか「やれやれ」って気分になってきたぞw(・∀・)
|
|
まだ読み出しのデバッグが終わってないというのに、書き込みコマンドに手を付けちゃいました。書き込みのほうが一手間多いのに、なんか上手くいっているみたい。使用したカードは、Canonのコンパクトデジカメについていた16MBのSDC。16GBちゃいませ、16MBでっせ。そういう時代もあったのですなあ。と感慨に耽っている場合ではありません。
まず、SDCのコマンドについておさらい。
一般に次の6バイトの形式で発行します。
[CMD][ARG1][ARG2][ARG3][ARG4][CRC]
[CMD]の部分は、読み出しなら[0x51]、書き込みなら[0x58]を入れます。続く[ARG1]〜[ARG4]は引数で、512バイト目から読み書きしたいときは、
[0x00][0x00][0x02][0x00]
となります。多くの場合、512Bが1単位となりますから、[ARG4]は[0x00]のままで、[ARG1][ARG2][ARG3]の3バイトでアドレスを指定することになります。[ARG3]に注目すると、第0セクタのときは[0x00]、512バイト目からの第1セクタのときは[0x02]、第2セクタのときは[0x04]・・・と偶数になるわけですね。
最後の[CRC]は、SPIモードでアクセスするときに意味を持つのは[CMD0]のときだけで[0x95]となります。
まとめると、
CMD 0:[0x40][0x00][0x00][0x00][0x00][0x95]
CMD 1:[0x41][0x00][0x00][0x00][0x00][0xF9]
CMD16:[0x50][0x00][0x00][0x02][0x00][0x00]
CMD17:[0x51][0x00][0x00][0x00][0x00][0x00]
CMD24:[0x58][0x00][0x00][0x00][0x00][0x00]
これだけ知っていれば、初期化して(CMD0、CMD1)、512B単位に設定して(CMD16)、読み(CMD17)、書き(CMD24)ができます。
さて、ここでどうしようかな?というのが、MSX-BASICからの引数の渡し方です。
2バイト整数で渡せばいいじゃん♪と思っていたら、SDCのセクタ数はもっと多いのですね。MSX-BASICの2バイト整数は正負ありなので−32768〜32767の範囲。しかし今回は正の偶数のみなので、2倍して32767より小さい16383がA=USR(n×2)のnに入る最大値ということになる?(間違ってたら教えてね。)
512B × 16383 =8,388,096B、つまり8MB余りが2バイト整数でアクセスできる限界?
「いや、そこは単精度なり倍精度を使えばいいじゃん」と思うかもしれませんが、MSX-BASICでは内部的には単精度や倍精度はBCD形式になってるんですよね。だからメモリからSDCにポイポイと[ARG1][ARG2][ARG3]の3バイトに放り込めないのですよ。一個ずつPOKEするしか思いつきません。
3バイト使えば、512B × 0xFF × 0xFF × 0xFE = 8,456,371,200B。およそ8.5GBまでアクセスできるんですねえ。・・・ってこれで合ってるの? なんかメチャ少ないんですけど?
ま、苦手な計算は得意な人に任せておいて、下の写真でも眺めていただきましょう。
CMD24で書き込みのテストをしているところです。左端の上の[ARG1]〜[ARG3]はコマンドの引数([ARG4]がないのはどうせ0x00だから)。次の[CHAR]は書き込みたい文字。512Bのバッファをこの文字で埋めます。[CMD_0:Done]から[CMD24:Finish]まではマシン語が返しているメッセージ。
続く[CMD_0RES:01]から[CMD24DRS:05]は、BASICがマシン語のワークエリアから拾ってきたコマンドレスポンス。全て正しいレスポンスが返ってるでしょ?
ほいで、書き込みを指示した文字が「w」だから「wwwwwwww」となっているわけです。
最後の「R/W」は、本当は先頭にあって「読み込み/書き込み」を選択します。
というわけで、だいたいの機能は盛り込めたと思うのですが、最初に書いたように、読み込みのデバッグがまだ出来てないのですよ >┼○ バタッ
書き込みも、本当に書き込めているのかSDCのセクタ毎にダンプできるツールで確かめてみたいところです。
今日はここまで来ました(・∀・)
|



