ここから本文です
Dr.Kikkie (KIKI) : 不許無断天才|免責:本稿を真に受けて損害があっても知らん。

書庫過去の投稿日別表示

全1ページ

[1]

えいやっと!今度は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

えいや!っと。まだデバッグ中ですが、アップロードのテストしてみました。
ここにアップロードすると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


全1ページ

[1]

1 2 3
4 5 6 7 8 9 10
11 12 13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31

過去の記事一覧

最新のコメント最新のコメント

すべて表示

kik**41010
kik**41010
非公開 / 非公開
人気度
Yahoo!ブログヘルプ - ブログ人気度について

よしもとブログランキング

もっと見る
本文はここまでですこのページの先頭へ

[PR]お得情報

CMで話題のふるさと納税サイトさとふる
毎日お礼品ランキング更新中!
2019年のふるさと納税は≪12/31まで≫
数量限定!イオンおまとめ企画
「無料お試しクーポン」か
「値引きクーポン」が必ず当たる!

その他のキャンペーン

みんなの更新記事