10000 '********************************************************** 10010 ' 10020 'VERTEX STANDARD VX-7 10030 'メモリー内容ダンププログラム Ver1.00 (Oct 3 2002) 10040 ' 10050 'Copyright by Heian Software Engineering 10060 '(C)2002 H.S.E. Allrights reserved. 10070 ' 10080 '********************************************************** 10090 ' 10100 ' 10110 ' 10120 *START 10130 CLEAR 10140 DEFINT A-Z 10150 WIDTH 80,25:CONSOLE 0,25,1,1:COLOR 7,0,0,7,2:CLS 2 10160 ' 10170 D.MAX=&H3FFF 10180 ' 10190 KEY 2,"SYSTEM"+CHR$(&HD) 10200 ' 10210 VERSION$="DUMPVX7.BAS VER 1.00" 10220 ' 10230 GOTO *MAIN 10240 ' 10250 *READ.HEX.CHR 10260 DIM HEX.CHR$(255) 10270 RESTORE *READ.HEX.CHR 10280 FOR READ.HEX.CHR.W=0 TO 255:READ HEX.CHR$(READ.HEX.CHR.W):NEXT 10290 DATA 00,01,02,03,04,05,06,07,08,09,0A,0B,0C,0D,0E,0F 10300 DATA 10,11,12,13,14,15,16,17,18,19,1A,1B,1C,1D,1E,1F 10310 DATA 20,21,22,23,24,25,26,27,28,29,2A,2B,2C,2D,2E,2F 10320 DATA 30,31,32,33,34,35,36,37,38,39,3A,3B,3C,3D,3E,3F 10330 DATA 40,41,42,43,44,45,46,47,48,49,4A,4B,4C,4D,4E,4F 10340 DATA 50,51,52,53,54,55,56,57,58,59,5A,5B,5C,5D,5E,5F 10350 DATA 60,61,62,63,64,65,66,67,68,69,6A,6B,6C,6D,6E,6F 10360 DATA 70,71,72,73,74,75,76,77,78,79,7A,7B,7C,7D,7E,7F 10370 DATA 80,81,82,83,84,85,86,87,88,89,8A,8B,8C,8D,8E,8F 10380 DATA 90,91,92,93,94,95,96,97,98,99,9A,9B,9C,9D,9E,9F 10390 DATA A0,A1,A2,A3,A4,A5,A6,A7,A8,A9,AA,AB,AC,AD,AE,AF 10400 DATA B0,B1,B2,B3,B4,B5,B6,B7,B8,B9,BA,BB,BC,BD,BE,BF 10410 DATA C0,C1,C2,C3,C4,C5,C6,C7,C8,C9,CA,CB,CC,CD,CE,CF 10420 DATA D0,D1,D2,D3,D4,D5,D6,D7,D8,D9,DA,DB,DC,DD,DE,DF 10430 DATA E0,E1,E2,E3,E4,E5,E6,E7,E8,E9,EA,EB,EC,ED,EE,EF 10440 DATA F0,F1,F2,F3,F4,F5,F6,F7,F8,F9,FA,FB,FC,FD,FE,FF 10450 RETURN 10460 ' 10470 ' 10480 *READ.ERROR.MES 10490 DIM ERROR.MES$(100) 10500 RESTORE *READ.ERROR.MES 10510 *READ.ERROR.MES.1000 10520 READ ERROR.MES.W 10530 IF ERROR.MES.W<0 THEN RETURN 10540 READ ERROR.MES$(ERROR.MES.W) 10550 GOTO *READ.ERROR.MES.1000 10560 DATA 0,"--- 正常終了(000) ---" 10570 DATA 60,"*** 入力データが不足しています。(060) ***" 10580 DATA 61,"*** 入力データ構造に誤りがあります。(061) ***" 10590 DATA -1,"" 10600 ' 10610 ' 10620 *READ.TAG.CHR 10630 DIM TAG.CHR$(255,1) 10640 RESTORE *READ.TAG.CHR 10650 FOR READ.TAG.CHR.W=0 TO 255:READ TAG.CHR$(READ.TAG.CHR.W,0):NEXT 10660 DATA "0","1","2","3","4","5","6","7","8","9"," ","A","B","C","D","E":'0 10670 DATA "F","G","H","I","J","K","L","M","N","O","P","Q","R","S","T","U":'1 10680 DATA "V","W","X","Y","Z","a","b","c","d","e","f","g","h","i","j","k":'2 10690 DATA "l","m","n","o","p","q","r","s","t","u","v","w","x","y","z",".":'3 10700 DATA ",",":",";","!","”","#","$","%","&","’","(",")","*","+","−","・":'4 10710 DATA "=","<",">","?","@","[","¥","]","^","_","\","{","|","}","→","←":'5 10720 DATA "▲","▼","〜","★","÷","×","√","λ","μ","π","φ","ω","Ω","℃","☆","£":'6 10730 DATA "±","∫","♪","●","♭","○","「","」","・","♂","♀","〒","あ","い","う","え":'7 10740 DATA "お","か","き","く","け","こ","さ","し","す","せ","そ","た","ち","つ","て","と":'8 10750 DATA "な","に","ぬ","ね","の","は","ひ","ふ","へ","ほ","ま","み","む","め","も","や":'9 10760 DATA "ゆ","よ","ら","り","る","れ","ろ","わ","を","ん"," "," ","が","ぎ","ぐ","げ":'A 10770 DATA "ご","ざ","じ","ず","ぜ","ぞ","だ","ぢ","づ","で","ど","ば","び","ぶ","べ","ぼ":'B 10780 DATA "ぱ","ぴ","ぷ","ぺ","ぽ","ぁ","ぃ","ぅ","ぇ","ぉ","ゃ","ゅ","ょ","っ","ア","イ":'C 10790 DATA "ウ","エ","オ","カ","キ","ク","ケ","コ","サ","シ","ス","セ","ソ","タ","チ","ツ":'D 10800 DATA "テ","ト","ナ","ニ","ヌ","ネ","ノ","ハ","ヒ","フ","ヘ","ホ","マ","ミ","ム","メ":'E 10810 DATA "モ","ヤ","ユ","ヨ","ラ","リ","ル","レ","ロ","ワ","ヲ","ン","ガ","ギ","グ","ゲ":'F 10820 FOR READ.TAG.CHR.W=0 TO 255:READ TAG.CHR$(READ.TAG.CHR.W,1):NEXT 10830 DATA "ゴ","ザ","ジ","ズ","ゼ","ゾ","ダ","ヂ","ヅ","デ","ド","バ","ビ","ブ","ベ","ボ":'0 10840 DATA "パ","ピ","プ","ペ","ポ","ァ","ィ","ゥ","ェ","ォ","ャ","ュ","ョ","ッ","愛","圧":'1 10850 DATA "伊","位","井","育","一","茨","英","衛","越","円","遠","横","岡","沖","屋","温":'2 10860 DATA "音","化","歌","河","火","香","鹿","賀","海","柿","隔","学","潟","間","関","菅":'3 10870 DATA "岩","基","機","気","城","岐","急","救","九","京","教","橋","玉","禁","金","区":'4 10880 DATA "空","熊","栗","群","郡","形","警","月","県","原","言","限","庫","込","古","五":'5 10890 DATA "語","口","広","航","高","合","刻","国","黒","根","佐","災","埼","西","坂","崎":'6 10900 DATA "察","札","沢","澤","三","山","四","士","市","止","紙","滋","児","時","示","自":'7 10910 DATA "七","取","手","殊","酒","州","秋","集","十","重","書","小","消","上","新","森":'8 10920 DATA "神","水","制","青","静","石","設","仙","千","川","線","船","相","総","送","束":'9 10930 DATA "測","続","村","隊","台","大","第","滝","単","知","中","庁","朝","町","聴","長":'A 10940 DATA "鳥","定","鉄","天","田","電","戸","都","度","土","島","東","盗","藤","道","徳":'B 10950 DATA "特","読","栃","奈","縄","二","日","沼","濃","能","馬","売","舶","八","阪","飯":'C 10960 DATA "尾","媛","百","表","秒","浜","富","府","阜","武","部","幅","福","分","文","聞":'D 10970 DATA "兵","並","放","芳","防","北","幌","本","毎","万","宮","無","名","木","谷","野":'E 10980 DATA "葉","陽","絡","梨","良","林","鈴","連","路","六","和","〓","〓","〓","〓","〓":'F 10990 RETURN 11000 ' 11010 *READ.PWR.CHR 11020 DIM PWR.CHR$(3) 11030 RESTORE *READ.PWR.CHR 11040 FOR READ.PWR.CHR.W=0 TO 3:READ PWR.CHR$(READ.PWR.CHR.W):NEXT 11050 DATA "L1","L2","L3","HI" 11060 RETURN 11070 ' 11080 *READ.SIMP.CHR 11090 DIM SIMP.CHR$(3) 11100 RESTORE *READ.SIMP.CHR 11110 FOR READ.SIMP.CHR.W=0 TO 3:READ SIMP.CHR$(READ.SIMP.CHR.W):NEXT 11120 DATA "SIMP","-DUP","+DUP","TXRX" 11130 RETURN 11140 ' 11150 *READ.STEP.CHR 11160 DIM STEP.CHR$(7) 11170 RESTORE *READ.STEP.CHR 11180 FOR READ.STEP.CHR.W=0 TO 7:READ STEP.CHR$(READ.STEP.CHR.W):NEXT 11190 DATA "5","10","12.5","15","20","25","50","100" 11200 RETURN 11210 ' 11220 *READ.SQL.CHR 11230 DIM SQL.CHR$(7) 11240 RESTORE *READ.SQL.CHR 11250 FOR READ.SQL.CHR.W=0 TO 7:READ SQL.CHR$(READ.SQL.CHR.W):NEXT 11260 DATA "NONE","TONE","TSQL","DCS","???","???","???","???" 11270 RETURN 11280 ' 11290 *READ.MODE.CHR 11300 DIM MODE.CHR$(3) 11310 RESTORE *READ.MODE.CHR 11320 FOR READ.MODE.CHR.W=0 TO 3:READ MODE.CHR$(READ.MODE.CHR.W):NEXT 11330 DATA "N-FM","AM","W-FM","???" 11340 RETURN 11350 ' 11360 *READ.TSQ.CHR 11370 DIM TSQ.CHR$(255) 11380 FOR READ.TSQ.CHR.W=0 TO 255:TSQ.CHR$(READ.TSQ.CHR.W)="???":NEXT 11390 RESTORE *READ.TSQ.CHR 11400 FOR READ.TSQ.CHR.W=0 TO 49:READ TSQ.CHR$(READ.TSQ.CHR.W):NEXT 11410 DATA 67.0,69.3,71.9,74.4,77.0,79.7,82.5,85.4,88.5,91.5 11420 DATA 94.8,97.4,100.0,103.5,107.2,110.9,114.8,118.8,123.0,127.3 11430 DATA 131.8,136.5,141.3,146.2,151.4,156.7,159.8,162.2,165.5,167.9 11440 DATA 171.3,173.8,177.3,179.9,183.5,186.2,189.9,192.8,196.6,199.5 11450 DATA 203.5,206.5,210.7,218.1,225.7,229.1,233.6,241.8,250.3,254.1 11460 RETURN 11470 ' 11480 *READ.DCS.CHR 11490 DIM DCS.CHR$(255) 11500 FOR READ.DCS.CHR.W=0 TO 255:DCS.CHR$(READ.DCS.CHR.W)="???":NEXT 11510 RESTORE *READ.DCS.CHR 11520 FOR READ.DCS.CHR.W=0 TO 103:READ DCS.CHR$(READ.DCS.CHR.W):NEXT 11530 DATA 023,025,026,031,032,036,043,047,051,053 11540 DATA 054,065,071,072,073,074,114,115,116,122 11550 DATA 125,131,132,134,143,145,152,155,156,162 11560 DATA 165,172,174,205,212,223,225,226,243,244 11570 DATA 245,246,251,252,255,261,263,265,266,271 11580 DATA 274,306,311,315,325,331,332,343,346,351 11590 DATA 356,364,365,371,411,412,413,423,431,432 11600 DATA 445,446,452,454,455,462,464,465,466,503 11610 DATA 506,516,523,526,532,546,565,606,612,624 11620 DATA 627,631,632,654,662,664,703,712,723,731 11630 DATA 732,734,743,754 11640 RETURN 11650 ' 11660 *READ.CH.CHR 11670 DIM CH.CHR$(512) 11680 FOR READ.CH.CHR.W=1 TO 450 11690 CH.CHR$(READ.CH.CHR.W)="M"+RIGHT$("00"+RIGHT$(STR$(READ.CH.CHR.W),LEN(STR$(READ.CH.CHR.W))-1),3) 11700 NEXT 11710 RESTORE *READ.CH.CHR 11720 FOR READ.CH.CHR.W=451 TO 511:READ CH.CHR$(READ.CH.CHR.W):NEXT 11730 DATA "OTM1","OTM2","OTM3","OTM4","OTM5","OTM6","OTM7","OTM8","OTM9","OTM0" 11740 DATA "PMS_L01","PMS_U01","PMS_L02","PMS_U02","PMS_L03","PMS_U03","PMS_L04","PMS_U04" 11750 DATA "PMS_L05","PMS_U05","PMS_L06","PMS_U06","PMS_L07","PMS_U07","PMS_L08","PMS_U08" 11760 DATA "PMS_L09","PMS_U09","PMS_L10","PMS_U10","PMS_L11","PMS_U11","PMS_L12","PMS_U12" 11770 DATA "PMS_L13","PMS_U13","PMS_L14","PMS_U14","PMS_L15","PMS_U15","PMS_L16","PMS_U16" 11780 DATA "PMS_L17","PMS_U17","PMS_L18","PMS_U18","PMS_L19","PMS_U19","PMS_L20","PMS_U20" 11790 DATA "HM_BC","HM_HF","HM_FM","HM_TV","HM_050","HM_144","HM_220","HM_430","HM_AIR","HM_ACT1","HM_ACT2" 11800 RETURN 11810 ' 11820 *INIT.DATA.TABLE 11830 DIM D(D.MAX) 11840 FOR INIT.DATA.TABLE.W=0 TO D.MAX:D(INIT.DATA.TABLE.W)=-1:NEXT 11850 RETURN 11860 ' 11870 *READ.DATA.TABLE 11880 READ.DATA.TABLE.N=&H3F52 11890 READ.DATA.TABLE.NC=0 11900 *READ.DATA.TABLE.0000 11910 IF EOF(1) THEN READ.DATA.TABLE.ERR=60:RETURN 11920 LINE INPUT #1,READ.DATA.TABLE.I$ 11930 IF READ.DATA.TABLE.I$="" THEN GOTO *READ.DATA.TABLE.0000 11940 IF LEFT$(READ.DATA.TABLE.I$,1)="'" THEN GOTO *READ.DATA.TABLE.0000 11950 IF LEN(READ.DATA.TABLE.I$)<>9 THEN READ.DATA.TABLE.ERR=61:RETURN 11960 READ.DATA.TABLE.IH$=MID$(READ.DATA.TABLE.I$,1,2) 11970 READ.DATA.TABLE.IL$=MID$(READ.DATA.TABLE.I$,3,2) 11980 READ.DATA.TABLE.ID$=MID$(READ.DATA.TABLE.I$,8,2) 11990 IF HEX.CHR$(VAL("&H"+READ.DATA.TABLE.IH$))<>READ.DATA.TABLE.IH$ THEN READ.DATA.TABLE.ERR=61:RETURN 12000 IF HEX.CHR$(VAL("&H"+READ.DATA.TABLE.IL$))<>READ.DATA.TABLE.IL$ THEN READ.DATA.TABLE.ERR=61:RETURN 12010 IF HEX.CHR$(VAL("&H"+READ.DATA.TABLE.ID$))<>READ.DATA.TABLE.ID$ THEN READ.DATA.TABLE.ERR=61:RETURN 12020 READ.DATA.TABLE.AD=VAL("&H"+READ.DATA.TABLE.IH$)*256+VAL("&H"+READ.DATA.TABLE.IL$) 12030 IF READ.DATA.TABLE.AD>READ.DATA.TABLE.N THEN READ.DATA.TABLE.ERR=61:RETURN17300 IF READ.DATA.TABLE.AD<0 THEN READ.DATA.TABLE.ERR=61:RETURN 12040 D(READ.DATA.TABLE.AD)=VAL("&H"+READ.DATA.TABLE.ID$) 12050 READ.DATA.TABLE.NC=READ.DATA.TABLE.NC+1 12060 ' 12070 IF READ.DATA.TABLE.NC MOD 256=0 THEN PRINT "*"; 12080 IF READ.DATA.TABLE.NC<=READ.DATA.TABLE.N THEN GOTO *READ.DATA.TABLE.0000 12090 READ.DATA.TABLE.ERR=0 12100 FOR READ.DATA.TABLE.W=0 TO READ.DATA.TABLE.N 12110 IF D(READ.DATA.TABLE.W)<0 THEN READ.DATA.TABLE.ERR=60 12120 NEXT 12130 RETURN 12140 ' 12150 *GET.MEM.DATA 12160 PWR.CHR.X$=PWR.CHR$((D(MEM.OFFSET+1)\64) AND 3) 12170 SIMP.CHR.X$=SIMP.CHR$((D(MEM.OFFSET+1)\16) AND 3) 12180 STEP.CHR.X$=STEP.CHR$((D(MEM.OFFSET+1)\1) AND 7) 12190 MODE.CHR.X$=MODE.CHR$((D(MEM.OFFSET+5)\1) AND 3) 12200 SQL.CHR.X$=SQL.CHR$((D(MEM.OFFSET+20)\1) AND 7) 12210 TSQ.CHR.X$=TSQ.CHR$((D(MEM.OFFSET+18)\1) AND 255) 12220 DCS.CHR.X$=DCS.CHR$((D(MEM.OFFSET+19)\1) AND 255) 12230 TAG.CHR.X$="" 12240 FOR GET.MEM.DATA=0 TO 7 12250 TAG.CHR.X$=TAG.CHR.X$+TAG.CHR$(D(MEM.OFFSET+6+GET.MEM.DATA),D(MEM.OFFSET+21)\(2^GET.MEM.DATA) MOD 2) 12260 NEXT 12270 GET.MEM.DATA.SUB.O=MEM.OFFSET+2:GOSUB *GET.MEM.DATA.SUB:FREQ0.CHR.X$=GET.MEM.DATA.SUB.F$ 12280 GET.MEM.DATA.SUB.O=MEM.OFFSET+15:GOSUB *GET.MEM.DATA.SUB:FREQ1.CHR.X$=GET.MEM.DATA.SUB.F$ 12290 DATA.CHR.X$="" 12300 FOR GET.MEM.DATA.W=0 TO 21 12310 DATA.CHR.X$=DATA.CHR.X$+HEX.CHR$(D(MEM.OFFSET+GET.MEM.DATA.W))+" " 12320 NEXT 12330 RETURN 12340 ' 12350 *GET.MEM.DATA.SUB 12360 GET.MEM.DATA.SUB.F2$=HEX.CHR$(D(GET.MEM.DATA.SUB.O)) 12370 GET.MEM.DATA.SUB.F1$=HEX.CHR$(D(GET.MEM.DATA.SUB.O+1)) 12380 GET.MEM.DATA.SUB.F0$=HEX.CHR$(D(GET.MEM.DATA.SUB.O+2)) 12390 IF GET.MEM.DATA.SUB.05<>0 THEN F0$=F0$+"5" 12400 GET.MEM.DATA.SUB.F$=GET.MEM.DATA.SUB.F2$+LEFT$(GET.MEM.DATA.SUB.F1$,1)+"."+RIGHT$(GET.MEM.DATA.SUB.F1$,1)+GET.MEM.DATA.SUB.F0$ 12410 IF LEFT$(GET.MEM.DATA.SUB.F$,1)="0" THEN GET.MEM.DATA.SUB.F$=MID$(GET.MEM.DATA.SUB.F$,2,7) 12420 IF LEFT$(GET.MEM.DATA.SUB.F$,1)="0" THEN GET.MEM.DATA.SUB.F$=MID$(GET.MEM.DATA.SUB.F$,2,6) 12430 RETURN 12440 ' 12450 *OUT.STR 12460 PRINT OUT.STR$ 12470 PRINT #2,OUT.STR$ 12480 RETURN 12490 ' 12500 *FINISH 12510 PRINT 12520 PRINT ERROR.MES$(ERROR.CODE) 12530 CLOSE 12540 END 12550 ' 12560 *MAIN 12570 GOSUB *READ.HEX.CHR 12580 GOSUB *READ.ERROR.MES 12590 GOSUB *INIT.DATA.TABLE 12600 GOSUB *READ.TAG.CHR 12610 GOSUB *READ.PWR.CHR 12620 GOSUB *READ.SIMP.CHR 12630 GOSUB *READ.STEP.CHR 12640 GOSUB *READ.SQL.CHR 12650 GOSUB *READ.MODE.CHR 12660 GOSUB *READ.TSQ.CHR 12670 GOSUB *READ.DCS.CHR 12680 GOSUB *READ.CH.CHR 12690 INPUT "入力ファイル:",INFILE$ 12700 INPUT "出力ファイル:",OUTFILE$ 12710 OPEN INFILE$ FOR INPUT AS #1 12720 GOSUB *READ.DATA.TABLE:PRINT 12730 IF READ.DATA.TABLE.ERR<>0 THEN ERROR.CODE=READ.DATA.TABLE.ERR:GOTO *FINISH 12740 OPEN OUTFILE$ FOR OUTPUT AS #2 12750 K$="メモリ,周波数(MHz),出力,SIMP/DUP,ステップ(KHz),モード,周波数’(MHz),スケルチ,トーン(Hz),DCS,メモリタグ,備考" 12760 OUT.STR$=K$:GOSUB *OUT.STR 12770 FOR MX=1 TO 500 12780 MEM.OFFSET=&H1322-22+MX*22 12790 GOSUB *GET.MEM.DATA 12800 TA=&H1202+(MX-1)\2 12810 IF (MX-1) MOD 2=0 THEN TAF=D(TA) AND 15 ELSE TAF=(D(TA)\16) AND 15 12820 IF (TAF AND 1)<>1 THEN GOTO *MAIN8000 12830 K$=CH.CHR$(MX)+","+FREQ0.CHR.X$+","+PWR.CHR.X$+","+SIMP.CHR.X$+","+STEP.CHR.X$+","+MODE.CHR.X$+"," 12840 K$=K$+FREQ1.CHR.X$+","+SQL.CHR.X$+","+TSQ.CHR.X$+","+DCS.CHR.X$+","+TAG.CHR.X$+","+DATA.CHR.X$ 12850 OUT.STR$=K$:GOSUB *OUT.STR 12860 *MAIN8000 12870 NEXT 12880 ERROR.CODE=0:GOTO *FINISH