復活!CP/M ワンボードマイコンでCP/Mを!
CP/MがTK−80互換のワンボードマイコンの上で復活します
ND80ZVとMYCPU80の上でCP/Mが走ります!
[第536回]
●E−80評価プログラムを作っていただきました
以前から何回かご紹介させていただいております大分県のH様から、正月早々大変な労作のご報告をいただきました。
H様にはE−80ミニコンの試作3号機をお届けしていろいろなプログラムを作っていただいて評価をしていただいております([第463回]参照)。
H様が今回作られたプログラムは独自のマシン語モニタ機能に加えてE−80のバンクメモリを自由に切り換えて使用するなどの興味深い内容のものです。
H様からはソースプログラムもお送りいただきましたが、私が作ったプログラムではありませんから、それをこの場で皆様にお見せするわけにもいきませんし、E−80ミニコンで動作するプログラムですので、それをそのままの形で皆様に利用していただくというわけにもいきません。
せめてお送りいただいたログとその説明をそのまま転載させていただきます。
こちらがログリストです。
logfile e80log\01080747.txt open E−80に接続しました loading e80mon3e.bin ...7b80(31616)bytes loaded monitor start ok zb3basic core entry mode check mode data is 38 *** ZB3 basic **** >/ld e80mon.bin,8100 -------------------------------------------#01 loading E80MON.BIN ...0d0e(3342)bytes loaded,from 8100 to 8E0D >jp 8100 -------------------------------------------------------#02 Mon80 Ver 0.8A For E-80 Zb3Basic Mode Monitor Program (C)2014/01/07 By S.H CMD>MC 0000,7000,08@08 -----------------------------------------#03 CMD>MC 0000,8000,10@10 CMD>MC 0000,8000,18@18 CMD>MC 0000,8000,20 CMD>MC 0000,6000,28 CMD>MC 0000,8000,30@30 CMD>MC 0000,8000,38@38 CMD>MC 0000,8000,40@40 CMD>MC 0000,8000,48@48 CMD>SYS --------------------------------------------------------#03 ** By By !! ** >/ld music4e9.bin,8000 -----------------------------------------#04 loading MUSIC4E9.BIN ...00e6(230)bytes loaded,from 8000 to 80E5 >/ld kokyo.btk,80fc loading KOKYO.BTK ...009f(159)bytes loaded,from 80FC to 819A >jp 0100 -------------------------------------------------------#05 Mon80 Ver 0.8A For E-80 Zb3Basic Mode Monitor Program (C)2014/01/07 By S.H CMD>DM 0FF0,02@07 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 0FF0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 1000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>MO 0000,8000,019B@08 ---------------------------------------#06 CMD>GO 8000 ----------------------------------------------------#07 CMD>DM 8000,1A -------------------------------------------------#08 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... 8010 00 E0 B7 CA 6F 80 FE 1E DA 20 80 23 23 C3 0C 80 ....o.... .##... 8020 F5 B9 CC 8D 80 23 46 23 F1 E5 21 AA 80 87 5F 16 .....#F#..!..._. 8030 00 19 56 23 5E 3A FF 80 6F 60 7B 32 FE 80 4A 3E ..V#^:..o`{2..J> 8040 03 D3 FB E5 E5 E1 E1 00 0D C2 43 80 4A 3E 02 D3 ..........C.J>.. 8050 FB E5 E5 E1 E1 00 0D C2 51 80 1D C2 3E 80 3A FE ........Q...>.:. 8060 80 5F 05 C2 3E 80 44 2D C2 3E 80 E1 C3 08 80 23 ._..>.D-.>.....# 8070 46 23 E5 3A FF 80 6F 60 CD 92 80 05 C2 78 80 44 F#.:..o`.....x.D 8080 2D C2 78 80 E1 C3 08 80 23 23 C3 08 80 0E 05 C3 -.x.....##...... 8090 94 80 0E 28 CD 9C 80 0D C2 94 80 C9 F5 3E 5F E5 ...(.........>_. 80A0 E5 E1 E1 00 3D C2 9F 80 F1 C9 00 00 7F 10 77 11 ....=.........w. 80B0 71 12 6A 13 64 14 5F 15 59 16 54 18 4F 19 4B 1A q.j.d._.Y.T.O.K. 80C0 47 1C 43 1E 3F 1F 3B 21 38 23 35 25 32 27 2F 2A G.C.?.;!8#5%2'/* 80D0 2C 2C 2A 2F 27 32 25 35 23 38 21 3B 1F 3F 1D 43 ,,*/'2%5#8!;.?.C 80E0 1B 47 1A 4A 18 50 08 08 08 08 08 08 08 08 08 08 .G.J.P.......... 80F0 08 08 08 08 08 08 08 08 08 08 08 08 81 00 81 9A ................ 8100 0D 06 0F 02 0D 04 0A 04 12 06 14 02 12 04 0F 04 ................ 8110 0D 04 0A 04 12 04 0A 04 08 0C 00 04 0D 06 0F 02 ................ 8120 0D 04 0A 04 12 06 14 02 12 04 0F 04 12 04 0A 04 ................ 8130 0A 06 08 02 06 0C 00 04 08 06 07 02 08 04 0B 04 ................ 8140 0A 06 09 02 0A 04 0D 04 0F 04 0D 04 0B 04 0A 04 ................ 8150 08 0C 00 04 0D 06 0F 02 0D 04 0A 04 12 06 14 02 ................ 8160 12 04 0F 04 0D 04 0A 04 0A 02 08 06 06 0C 00 04 ................ 8170 0D 06 09 02 0A 04 0D 0C 00 08 0D 04 08 04 11 06 ................ 8180 0F 02 0D 08 00 08 0D 06 09 02 0A 04 0D 0C 00 08 ................ 8190 12 04 0A 04 0A 02 08 06 06 0C FF 28 28 28 28 28 ...........((((( CMD>SA 8000,819A -----------------------------------------------#09 :208000003E0332FF802100813AFD804F7EFEFFCA00E0B7CA6F80FE1EDA20802323C30C8006 :20802000F5B9CC8D80234623F1E521AA80875F16001956235E3AFF806F607B32FE804A3EE5 :2080400003D3FBE5E5E1E1000DC243804A3E02D3FBE5E5E1E1000DC251801DC23E803AFED8 :20806000805F05C23E80442DC23E80E1C30880234623E53AFF806F60CD928005C2788044A4 :208080002DC27880E1C308802323C308800E05C394800E28CD9C800DC29480C9F53E5FE510 :2080A000E5E1E1003DC29F80F1C900007F10771171126A1364145F15591654184F194B1A96 :2080C000471C431E3F1F3B213823352532272F2A2C2C2A2F273225352338213B1F3F1D43E2 :2080E0001B471A4A1850080808080808080808080808080808080808080808088100150309 :208100000D060F020D040A041206140212040F040D040A0412040A04080C00040D060F0246 :208120000D040A041206140212040F0412040A040A060802060C00040806070208040B0443 :208140000A0609020A040D040F040D040B040A04080C00040D060F020D040A04120614021B :2081600012040F040D040A040A020806060C00040D0609020A040D0C00080D040804110606 :1B8180000F020D0800080D0609020A040D0C000812040A040A020806060CFF1A :00000001FF CMD>MO 8000,0000,019B@38 ---------------------------------------#10 CMD>BA ---------------------------------------------------------#11 BBR = 20 CMD>BA 30 ------------------------------------------------------#12 CMD>BA --------------------------------------------------------#13 BBR = 30 CMD>CB ---------------------------------------------------------#14 CBAR = 80 CMD>CB E -------------------------------------------------------#15 CMD>DM 8000,1A ------------------------------------------------#16 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... 8010 00 E0 B7 CA 6F 80 FE 1E DA 20 80 23 23 C3 0C 80 ....o.... .##... 8020 F5 B9 CC 8D 80 23 46 23 F1 E5 21 AA 80 87 5F 16 .....#F#..!..._. 8030 00 19 56 23 5E 3A FF 80 6F 60 7B 32 FE 80 4A 3E ..V#^:..o`{2..J> 8040 03 D3 FB E5 E5 E1 E1 00 0D C2 43 80 4A 3E 02 D3 ..........C.J>.. 8050 FB E5 E5 E1 E1 00 0D C2 51 80 1D C2 3E 80 3A FE ........Q...>.:. 8060 80 5F 05 C2 3E 80 44 2D C2 3E 80 E1 C3 08 80 23 ._..>.D-.>.....# 8070 46 23 E5 3A FF 80 6F 60 CD 92 80 05 C2 78 80 44 F#.:..o`.....x.D 8080 2D C2 78 80 E1 C3 08 80 23 23 C3 08 80 0E 05 C3 -.x.....##...... 8090 94 80 0E 28 CD 9C 80 0D C2 94 80 C9 F5 3E 5F E5 ...(.........>_. 80A0 E5 E1 E1 00 3D C2 9F 80 F1 C9 00 00 7F 10 77 11 ....=.........w. 80B0 71 12 6A 13 64 14 5F 15 59 16 54 18 4F 19 4B 1A q.j.d._.Y.T.O.K. 80C0 47 1C 43 1E 3F 1F 3B 21 38 23 35 25 32 27 2F 2A G.C.?.;!8#5%2'/* 80D0 2C 2C 2A 2F 27 32 25 35 23 38 21 3B 1F 3F 1D 43 ,,*/'2%5#8!;.?.C 80E0 1B 47 1A 4A 18 50 08 08 08 08 08 08 08 08 08 08 .G.J.P.......... 80F0 08 08 08 08 08 08 08 08 08 08 08 08 81 00 15 03 ................ 8100 0D 06 0F 02 0D 04 0A 04 12 06 14 02 12 04 0F 04 ................ 8110 0D 04 0A 04 12 04 0A 04 08 0C 00 04 0D 06 0F 02 ................ 8120 0D 04 0A 04 12 06 14 02 12 04 0F 04 12 04 0A 04 ................ 8130 0A 06 08 02 06 0C 00 04 08 06 07 02 08 04 0B 04 ................ 8140 0A 06 09 02 0A 04 0D 04 0F 04 0D 04 0B 04 0A 04 ................ 8150 08 0C 00 04 0D 06 0F 02 0D 04 0A 04 12 06 14 02 ................ 8160 12 04 0F 04 0D 04 0A 04 0A 02 08 06 06 0C 00 04 ................ 8170 0D 06 09 02 0A 04 0D 0C 00 08 0D 04 08 04 11 06 ................ 8180 0F 02 0D 08 00 08 0D 06 09 02 0A 04 0D 0C 00 08 ................ 8190 12 04 0A 04 0A 02 08 06 06 0C FF 38 38 38 38 38 ...........88888 CMD>GO 8000 ---------------------------------------------------#17 CMD>CB 8 -------------------------------------------------------#18 CMD>BA 20 ------------------------------------------------------#19 CMD>SYS --------------------------------------------------------#20 ** By By !! ** >/ld kokyo.hex,8000 -------------------------------------------#21 loading KOKYO.HEX ...03ed(1005)bytes loaded,from 8000 to 83EC >jp 0100 -------------------------------------------------------#22 Mon80 Ver 0.8A For E-80 Zb3Basic Mode Monitor Program (C)2014/01/07 By S.H CMD>MC 8000,1000,28 --------------------------------------------#23 CMD>LH 0000@08 -------------------------------------------------#24 CMD>GO 8000 ----------------------------------------------------#25 CMD>DM 0000,10@08 ----------------------------------------------#26 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 0000 3A 32 30 38 30 30 30 30 30 33 45 30 33 33 32 46 :208000003E0332F 0010 46 38 30 32 31 30 30 38 31 33 41 46 44 38 30 34 F802100813AFD804 0020 46 37 45 46 45 46 46 43 41 30 30 45 30 42 37 43 F7EFEFFCA00E0B7C 0030 41 36 46 38 30 46 45 31 45 44 41 32 30 38 30 32 A6F80FE1EDA20802 0040 33 32 33 43 33 30 43 38 30 30 36 0D 0A 3A 32 30 323C30C8006..:20 0050 38 30 32 30 30 30 46 35 42 39 43 43 38 44 38 30 802000F5B9CC8D80 0060 32 33 34 36 32 33 46 31 45 35 32 31 41 41 38 30 234623F1E521AA80 0070 38 37 35 46 31 36 30 30 31 39 35 36 32 33 35 45 875F16001956235E 0080 33 41 46 46 38 30 36 46 36 30 37 42 33 32 46 45 3AFF806F607B32FE 0090 38 30 34 41 33 45 45 35 0D 0A 3A 32 30 38 30 34 804A3EE5..:20804 00A0 30 30 30 30 33 44 33 46 42 45 35 45 35 45 31 45 00003D3FBE5E5E1E 00B0 31 30 30 30 44 43 32 34 33 38 30 34 41 33 45 30 1000DC243804A3E0 00C0 32 44 33 46 42 45 35 45 35 45 31 45 31 30 30 30 2D3FBE5E5E1E1000 00D0 44 43 32 35 31 38 30 31 44 43 32 33 45 38 30 33 DC251801DC23E803 00E0 41 46 45 44 38 0D 0A 3A 32 30 38 30 36 30 30 30 AFED8..:20806000 00F0 38 30 35 46 30 35 43 32 33 45 38 30 34 34 32 44 805F05C23E80442D CMD>DM 8000,10 -------------------------------------------------#27 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... 8010 00 E0 B7 CA 6F 80 FE 1E DA 20 80 23 23 C3 0C 80 ....o.... .##... 8020 F5 B9 CC 8D 80 23 46 23 F1 E5 21 AA 80 87 5F 16 .....#F#..!..._. 8030 00 19 56 23 5E 3A FF 80 6F 60 7B 32 FE 80 4A 3E ..V#^:..o`{2..J> 8040 03 D3 FB E5 E5 E1 E1 00 0D C2 43 80 4A 3E 02 D3 ..........C.J>.. 8050 FB E5 E5 E1 E1 00 0D C2 51 80 1D C2 3E 80 3A FE ........Q...>.:. 8060 80 5F 05 C2 3E 80 44 2D C2 3E 80 E1 C3 08 80 23 ._..>.D-.>.....# 8070 46 23 E5 3A FF 80 6F 60 CD 92 80 05 C2 78 80 44 F#.:..o`.....x.D 8080 2D C2 78 80 E1 C3 08 80 23 23 C3 08 80 0E 05 C3 -.x.....##...... 8090 94 80 0E 28 CD 9C 80 0D C2 94 80 C9 F5 3E 5F E5 ...(.........>_. 80A0 E5 E1 E1 00 3D C2 9F 80 F1 C9 00 00 7F 10 77 11 ....=.........w. 80B0 71 12 6A 13 64 14 5F 15 59 16 54 18 4F 19 4B 1A q.j.d._.Y.T.O.K. 80C0 47 1C 43 1E 3F 1F 3B 21 38 23 35 25 32 27 2F 2A G.C.?.;!8#5%2'/* 80D0 2C 2C 2A 2F 27 32 25 35 23 38 21 3B 1F 3F 1D 43 ,,*/'2%5#8!;.?.C 80E0 1B 47 1A 4A 18 50 00 00 00 00 00 00 00 00 00 00 .G.J.P.......... 80F0 00 00 00 00 00 00 00 00 00 00 00 00 81 00 15 03 ................ CMD>DM 8100,10 -------------------------------------------------#28 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 8100 0D 06 0F 02 0D 04 0A 04 12 06 14 02 12 04 0F 04 ................ 8110 0D 04 0A 04 12 04 0A 04 08 0C 00 04 0D 06 0F 02 ................ 8120 0D 04 0A 04 12 06 14 02 12 04 0F 04 12 04 0A 04 ................ 8130 0A 06 08 02 06 0C 00 04 08 06 07 02 08 04 0B 04 ................ 8140 0A 06 09 02 0A 04 0D 04 0F 04 0D 04 0B 04 0A 04 ................ 8150 08 0C 00 04 0D 06 0F 02 0D 04 0A 04 12 06 14 02 ................ 8160 12 04 0F 04 0D 04 0A 04 0A 02 08 06 06 0C 00 04 ................ 8170 0D 06 09 02 0A 04 0D 0C 00 08 0D 04 08 04 11 06 ................ 8180 0F 02 0D 08 00 08 0D 06 09 02 0A 04 0D 0C 00 08 ................ 8190 12 04 0A 04 0A 02 08 06 06 0C FF 28 28 28 28 28 ...........((((( 81A0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( 81B0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( 81C0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( 81D0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( 81E0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( 81F0 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 28 (((((((((((((((( CMD>DM 7FF0,02 -------------------------------------------------#29 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>BA 30 ------------------------------------------------------#30 CMD>DM 7FF0,02 -------------------------------------------------#31 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 30 0000000000000000 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>BA 70 ------------------------------------------------------#32 CMD>DM 7FF0,02 -------------------------------------------------#33 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 pppppppppppppppp 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>CB E -------------------------------------------------------#34 CMD>DM 7FF0,02 -------------------------------------------------35# +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 70 pppppppppppppppp 8000 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 xxxxxxxxxxxxxxxx CMD>DM DFF0,02 -------------------------------------------------#36 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF DFF0 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 78 xxxxxxxxxxxxxxxx E000 C3 F8 E7 C3 23 E0 C3 3A E1 C3 8A E0 C3 6A E1 C3 ....#..:.....j.. CMD>BA 50 ------------------------------------------------------#37 CMD>DM 7FF0,02 -------------------------------------------------#38 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 50 PPPPPPPPPPPPPPPP 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>MC 7FF8,0005,FF --------------------------------------------#39 CMD>DM 7FF0,02 -------------------------------------------------#40 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 50 50 50 50 50 50 50 50 FF FF FF FF FF 50 50 50 PPPPPPPP.....PPP 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>BA 20 ------------------------------------------------------#41 CMD>MC 7FF5,0005,AA@50 -----------------------------------------#42 CMD>DM 7FF0,02@50 ----------------------------------------------#43 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 50 50 50 50 50 AA AA AA AA AA FF FF FF 50 50 50 PPPPP........PPP 8000 3E 03 32 FF 80 21 00 81 3A FD 80 4F 7E FE FF CA >.2..!..:..O~... CMD>MO 7FF0,8000,000D@50 ---------------------------------------#44 CMD>DM 7FF0,02@50 ----------------------------------------------#45 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 50 50 50 50 50 AA AA AA AA AA FF FF FF 50 50 50 PPPPP........PPP 8000 50 50 50 50 50 AA AA AA AA AA FF FF FF FE FF CA PPPPP........... CMD>DM 7FF0,02 -------------------------------------------------#46 +0 +1 +2 +3 +4 +5 +6 +7 +8 +9 +A +B +C +D +E +F 0123456789ABCDEF 7FF0 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 20 8000 50 50 50 50 50 AA AA AA AA AA FF FF FF FE FF CA PPPPP........... CMD>SYS --------------------------------------------------------#47 ** By By !! ** >/exit リモート接続を終了しました logfile closed at Wed Jan 08 08:24:18 2014 |
そしてこちらが上のログにつけていただいた詳細説明です。
昨年のプログラムの該当部分に手を入れました。
HEXファイルの読み込みをZB3BASICのLDコマンドでダウンロードして、変換する方式に変更しました。これで、USB接続のみでコントロールできます。
E80.txtがログファイルです。
「E80MON」は「E8AMON」を名称を変更してコピーしています。
#01で「E80MON.BIN」をロードしています。
#02で起動しました。
物理メモリー08100H〜08E24Hにあるプログラムを2E000H〜2ED0DHに転送して、バンクエリヤやコモンエリヤを切り替えて起動しています。
また、互換DOSやZB3BASICと重なるメモリー領域はありませんので共存できます。
#03で、メモリーをクリヤーして、一旦、ZB3BASICへ帰ります。
#04で、MUSIC4E9.BINとKOKYO.BTKをメモリーへダウンロードしました。MUSIC4E9.BINは、ZB3BASICへ帰るようになっていたMUSIC4E2.BINをE80MONに帰るように修正したものです。この修正で物理メモリーのどのバンクに置いても動きます。バンクメモリーの変更は必要です。具体的には、バンクメモリーを32Kbから34Kb以上に変更し、バンクを切り替えることが必要ですが、E80MONで実施することができます。
#05でE80MONを再起動しました。E80MONは、ZB3BASICの0100H〜0114Hの間をZB3BASICからE80MONへジャンプする場合と、E80MONからZB3BASICへ帰るときに使用しています。ここを使用することによって、再ロードを不要にできました。E80MONを起動すると、使用するメモリーの領域は、物理メモリー20000H〜2FFFFHになっています。バンクエリヤ、コモンエリヤともに32Kbです。
#06で再起動したE80MONで、0000Hから8000Hへ、019Aバイトほど、バンクエリヤを一時、物理メモリー08000Hからの32Kbに切り替えてコピーしました。このように、バンクエリャは自由に変更することが可能です。
#07で「GO 8000」と入力して、8000Hからのプログラムを実行しました。KOKYO.BTKのメロディーが流れました。
#08プログラムとデータの領域をメモリーダンプしました。
#09プログラムとデータの領域をHEXファイルの仕様でメモリーダンプしました。このデータ部分を切り取って、最後に1AHを追加してやればHEXファイルになります。
#10で物理メモリー28000Hから38000Hへ、019Bバイトコピーしました。
#11現在のバンクエリャ確認のために、BBRを表示しました。
#12バンクエリャのBBRを30に変更しました。
#13バンクエリャを確認するために表示しました。
#14でコモンエリヤとバンクエリャの境界を確認のために表示しました。
#15バンクエリャを0000HからDFFFHの間に変更しました。
#16で8000Hからのメモリーダンプです。#10でコピーしたものです。
#17でGOと実行しました。#07と同様に、KOKYO.BTKのメロディーが流れました。
#18でコモンエリヤとバンクエリャの境界を元に戻しました。
#19でバンクエリャを元に戻しました。
#20ここで、一旦、E80MONを終了しました。
#21でZB3BASICのLDコマンドを利用して、#09から作成したkokyo.hexファイルを8000Hからのメモリーにダウンロードしました。
#22E80MONを再起動しました。
#23で8000Hから8FFFHの間を28Hでクリヤーしました。
#24で0000HからのメモリーにあるHEXデータをバイナリーに変換しました。0000@08は#21の8000 to 83ECと同じメモリーエリヤになります。
#25でGOと実行しました。#07や#17と同様に、KOKYO.BTKのメロディーが流れました。
#26でHEXデータの先頭部分をメモリーダンプしました。
#27と#28でバイナリーに変換した部分をメモリーダンプしました。
#29で7FF0Hからの部分をメモリーダンプしました。
#30で「BA 30」とバンクを切り替えました。
#31で7FF0Hからの部分をメモリーダンプしました。#30でバンクを切り替えたため、7FF0Hから7FFFHの間のメモリーの内容が変わりました。
#32で「BA 70」とバンクを切り替えました。
#33で#31と同じように7FF0Hからの部分をメモリーダンプしました。#32でバンクを切り替えたため、7FF0Hから7FFFHの間のメモリーの内容がまた変わりました。
#34でコモンエリヤとバンクエリャの境界を8000HからE000H(CB E)に変更しました。
#35で#33と同じように7FF0Hからの部分をメモリーダンプしました。#34で境界を8000HからE000H(CB E)に変更しため、7FF0Hから7FFFHの間のメモリーの内容がまた変わりました。
#36でDFF0Hからの部分をメモリーダンプしました。DFFFHまで78Hで埋まっています。
#37で「BA 50」とバンクを切り替えました。
#38で7FF0Hからの部分をメモリーダンプしました。また、内容が変わっています。
#39で7FF8Hから5バイトをFFHでクリヤーしました。
#40で7FF0Hからの部分をメモリーダンプしました。7FF8Hから5バイトがFFHでクリヤーされているのが確認できます。
#41で「BA 20」とバンクを切り替えました。
#42で7FF5Hから5バイトをバンク50に一時切り替えてAAHでクリヤーしました。
#43で7FF0Hからの部分をメモリーダンプしました。7FF5Hから5バイトがAAHでクリヤーされているのが確認できます。「@50」も機能しているようです。
#44で7FF0Hから8000Hへ13バイトバンク50に切り替えてコピーしました。
#45で7FF0Hからの部分をメモリーダンプしました。正常にコピーされています。
#46で#45と同じアドレスをバンク切り替えしないで、メモリーダンプしました。
8000Hが境界のため、7FF0Hから7FFFHは内容が変わりましたが、8000H以上は同じメモリーのため同じ内容が表示されました。
#47で終了です。E80MONを終了しZB3BASICへ帰り終了しました。
このように、ZB3BASICの一文字入出力ルーチンを利用して実行が可能になりました。
ZB3BASICの一文字入出力ルーチンを利用時のメモリー配分は、コモンエリヤ32Kb(物理メモリー00000H〜)、バンクエリヤ28Kb(物理メモリー20000H〜)、コモンエリヤ4Kb(物理メモリー0F000H〜)にしております。
課題は、TAB(09H)が利かないことです。
本来は、次のように表示されるはずです。
================================================== HL :Help message DM xxxx,xx@xx :Dump memory sadd len bank GO xxxx@xx SYS :Gosub address LH @xx :Load hex file SV xxxx,xxxx@xx :Set memory data start keta bank MO xxxx,xxxx,xxxx@xx :Move memory data sadd dest len bank MC xxxx,xxxx,xx@xx :Clear memory data sadd len data bank SA xxxx,xxxx@xx :Memory save BA xx (00 10 18 〜 78) ================================================== ところが ================================================== HL:Helpmessage DM xxxx,xx@xx:Dumpmemory sadd len bank GO xxxx@xx SYS:Gosubaddress LH @xx:Loadhex file SV xxxx,xxxx@xx:Setmemory data start keta bank MO xxxx,xxxx,xxxx@xx:Movememory data sadd dest len bank MC xxxx,xxxx,xx@xx:Clearmemory data sadd len data bank SA xxxx,xxxx@xx:Memory save BA xx(00 10 18 〜 78) ================================================== |
と表示されてしまいました。
E88BIN.bmpは、E80MON.BINの該当箇所を16進表示したものです。
9CCH,9CCDH,9EBH等にタブの09Hが有りますが、表示では無視されているようです。
これは私の勘なのですが、互換DOSでは09Hが利用可能で、ZB3BASICモードでは「ZB3DOSE.exe」が無視しているということはありませんでしょうか。ZB3BASICモードでも利用できないようです。
次にメモリーのバンク切り替えですが、第518回で説明いただいたCBARの機能であるコモンエリアとバンクエリアの境界設定は、「それぞれ別のお互いに連続していない(64KB以上離れた)アドレス
範囲の物理メモリを割り当てることができます。」ということでしたが、切り替えるタイミングは最大の注意を払う必要がありました。
E-80のCBARは、80Hが標準になっております。また、ZB3BASICの一文字入出力を利用する場合に、F000Hからのシステムリザーブ領域も、元に戻す必要があると理解しました。ところが、今回のプログラムはE000HからEFFFHに有りますので、CBARを80HからF8Hにすることにしました。。実は、ここに問題がありました。今回のプログラムの所在する領域がCBARを80HからF8Hに切り替えたとたん、
コモンエリヤからバンクエリヤに変わります。したがって、CBRとBBRの値が異なっていると、暴走してしまいます。
ここが理解できるまで、かなりの時間が必要でした。その為、今回はCBRとBBRの値を20Hに一旦変更して、CBARを80HからF8Hに切り替え、CBRを00Hに設定してからZB3BASICの一文字入出力ルーチンにジャンプするようにしました。
これで、正常に動くようになりました。
また、次のことが確認できました。
○コモンエリヤ0は、常に物理メモリーの00000Hから割り当てられること。
(この部分は説明は無かったと思いますが。)
○CBAR、CBR、BBRはIN命令にも対応していること。
(いただいた資料をよく理解していなかっただけですが)
「ユーザーが通常使用できる範囲としては物理メモリの08000〜0DFFFをお使いください。」ということでしたが、今回のプログラムのように互換DOSやZB3BASICと共存させようとすると、08000H〜0DFFFHの範囲の利用というのは辛いです。この範囲は、互換DOSやZB3BASICも利用しますから、破壊される可能性が大きいです。やはり、ここは00000Hから07FFHの間で互換DOSやZB3BASICから破壊されないエリヤを利用したいです。
USBケーブルですが、延長はできませんでした。USBハブも同様です。
ZB3DOSE.EXEが「E−80が接続されていないか電源が入っていません」
とエラーを表示します。ND80Z3も同様です。
Rs232cについては、その後問題は発生しておりません。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
H様。いつも積極的にND80ZVやE−80ミニコンの評価をしていただき有難うございます。
今回評価いただきましたことで、E−80のバンクメモリを含めて安定動作することが確認できました。
ご協力感謝申し上げます。
TAB(コード09)はご指摘の通り、ZB3BASICのシステムでは表示されないようにガードしています。
データとして送信受信する場合には00〜FFまでそのままスルーするのですが、表示データとしては00〜09は特殊な制御コードとして使っていますのでTABとしては働きません。
CP/M互換モードでは特別なコード変換処理を通じて表示できるようにしています。
今回のTABコードもそうなのですが、同様にご指摘いただいた0000〜7FFFのシステム領域の一部使用に関してもやはりZB3BASICでは一定の制約があります。
もともとZB3BASICはBASICシステムの中でマシン語プログラムを扱うことを前提として設計していますので、その範囲を超えてマシン語プログラムを使うことには限界があります。
そのような目的としてはCP/M互換DOS上で工夫されたほうが制約が少ないとも思います。
しかしせっかくのご努力に報いるためにも、いずれ時間ができましたらご要望を生かせるよう考えてみたいと思います。
USBケーブルが延長できないとのことですが、どのくらいの長さで試されたのでしょうか?
当方では動作テストの都合で、よく通常の1.8mに3mの延長ケーブルを接続して合計約5mでテストをしますが、正常に動作しています。
ハブは使っていません(ハブの使用は問題があるかも知れません)。
☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆☆
前回は、今回から新しいテーマでスタートする予定ですと書きましたが、H様からメールをいただきましたので、予定を変更いたしました。
ワンボードマイコンでCP/Mを![第536回]
2014.1.8upload
前へ
次へ
ホームページトップへ戻る