0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

『WAVE SIMULATOR』のフローチャートとプログラムリスト

Last updated at Posted at 2025-05-13

flowchart.gif

40年前に作った『WAVE SIMULATOR』(cf.安岡孝一, 杉岡俊男: 横波・縦波の反射と合成, 大阪府高等学校理化教育研究会「物理授業に使えるマイコン・ソフト集」, 第1集 (1986年8月), pp.25-32)のフローチャートとプログラムリストが出てきたので、ざっとスキャンしつつ、wavesimu.cmtに変換してみた。

┌──────────────────────────────┐
│ WAVE SIMULATOR               │
│    for PC-8001mk][SR         │
│              &               │
│        PC-8801series         │
│            by Koichi Yasuoka │
└──────────────────────────────┘

C000 : F3 31 FF 7F 3A 02 00 01 : 9F
C008 : 31 FB ED 41 21 48 C0 11 : 5C
C010 : 48 1F 01 E8 07 ED B0 FE : C2
C018 : A0 CA E8 25 FE FE CA 2E : 43
C020 : 26 31 FF FF AF D3 31 21 : 09
C028 : 37 C0 06 11 7E DF 23 10 : 86
C030 : FB DB 09 0F 38 FB C7 42 : 1A
C038 : 41 53 49 43 20 6D 6F 64 : 78
C040 : 65 20 65 72 72 6F 72 07 : B6
C048 : F3 F5 DB 09 E6 10 C2 D2 : 5E
C050 : 1F E5 D5 C5 DB 5C F5 3E : 18
C058 : 1B CD B9 21 3E 44 CD B9 : E2
C060 : 21 3E 1B CD B9 21 3E 54 : D3
C068 : CD B9 21 3E 31 CD B9 21 : E5
C070 : 3E 36 CD B9 21 DD 21 80 : C9
C078 : 80 16 32 3E 1B CD B9 21 : 00
C080 : 3E 53 CD B9 21 3E 30 CD : B3
C088 : B9 21 3E 36 CD B9 21 3E : 7B
C090 : 34 CD B9 21 3E 30 CD B9 : 1F
C098 : 21 0E 50 06 08 D3 5C CD : E1
C0A0 : E2 1F 67 D3 5D CD E2 1F : C6
C0A8 : B4 67 D3 5E CD E2 1F D3 : 55
C0B0 : 5F AC CD B9 21 10 E6 DD : F5
C0B8 : 23 0D 20 DF 01 F0 00 DD : 75
C0C0 : 09 15 20 B7 F1 F6 F8 0E : 62
C0C8 : 5B 0C 0F 30 FC ED 41 C1 : 19
C0D0 : D1 E1 3E 02 D3 E4 F1 FB : 25
C0D8 : ED 4D 00 21 6F 58 22 26 : 02
C0E0 : 27 C9 DD CB 70 07 17 DD : A3
C0E8 : CB 20 03 17 CB 0B 17 DD : 77
C0F0 : CB D0 03 17 CB 0B 17 DD : 2F
C0F8 : CB 80 03 17 CB 0B 17 C9 : D3
C100 : 00 00 00 00 00 00 00 00 : C1
C108 : 00 00 00 00 00 00 00 00 : C9
C110 : 00 00 00 00 00 00 00 00 : D1
C118 : 00 00 00 00 00 00 00 00 : D9
C120 : 00 00 00 00 00 00 00 00 : E1
C128 : 00 00 00 00 00 00 00 00 : E9
C130 : 00 00 00 00 00 00 00 00 : F1
C138 : 00 00 00 00 00 00 00 00 : F9
C140 : 00 00 00 00 00 00 07 0E : 16
C148 : 13 16 18 16 13 0E 07 00 : 88
C150 : 00 00 00 00 00 00 00 00 : 11
C158 : 00 00 00 00 00 00 00 00 : 19
C160 : 00 00 00 00 03 07 0A 0E : 43
C168 : 10 13 15 16 17 18 17 16 : D3
C170 : 15 13 10 0E 0A 07 03 00 : 8B
C178 : 01 03 05 07 09 0A 0C 0E : 76
C180 : 0F 10 12 13 14 15 16 16 : DA
C188 : 17 17 17 18 17 17 17 16 : 01
C190 : 16 15 14 13 12 10 0F 0E : E2
C198 : 0C 0A 09 07 05 03 01 00 : 88
C1A0 : 00 00 00 00 00 00 00 00 : 61
C1A8 : 00 00 00 00 00 00 00 00 : 69
C1B0 : 00 00 00 00 00 00 00 00 : 71
C1B8 : 00 00 00 00 00 00 0E 1C : A3
C1C0 : 26 2D 30 2D 26 1C 0E 00 : 81
C1C8 : 00 00 00 00 00 00 00 00 : 89
C1D0 : 00 00 00 00 00 00 00 00 : 91
C1D8 : 00 00 00 00 07 0E 15 1C : DF
C1E0 : 21 26 2A 2D 2F 30 2F 2D : FA
C1E8 : 2A 26 21 1C 15 0E 07 00 : 60
C1F0 : 03 07 0B 0E 12 15 19 1C : 30
C1F8 : 1F 21 24 26 28 2A 2C 2D : EE
C200 : 2E 2F 2F 30 2F 2F 2E 2D : 37
C208 : 2C 2A 28 26 24 21 1F 1C : EE
C210 : 19 15 12 0E 0B 07 03 00 : 35
C218 : 00 00 00 00 00 00 00 00 : DA
C220 : 00 00 00 00 00 00 00 00 : E2
C228 : 00 00 00 00 00 00 00 00 : EA
C230 : 00 00 00 00 00 00 1D 38 : 47
C238 : 4D 5B 60 5B 4D 38 1D 00 : FF
C240 : 00 00 00 00 00 00 00 00 : 02
C248 : 00 00 00 00 00 00 00 00 : 0A
C250 : 00 00 00 00 0F 1D 2B 38 : A1
C258 : 43 4D 55 5B 5E 60 5E 5B : D1
C260 : 55 4D 43 38 2B 1D 0F 00 : 96
C268 : 07 0F 16 1D 24 2B 32 38 : 2C
C270 : 3E 43 48 4D 51 55 58 5B : A1
C278 : 5D 5E 5F 60 5F 5E 5D 5B : 29
C280 : 58 55 51 4D 48 43 3E 38 : 8E
C288 : 32 2B 24 1D 16 0F 07 00 : 14
C290 : 00 00 00 78 FC 3C 7E 1E : 9E
C298 : 3F 0F 1F 07 0F 03 07 01 : E8
C2A0 : 03 00 01 00 80 80 C0 C0 : E6
C2A8 : E0 E0 F0 F0 F8 00 00 00 : 02
C2B0 : C0 60 30 18 0C 06 03 01 : F0
C2B8 : 80 6F DB 40 0F 38 FB 7D : 43
C2C0 : D3 10 AF D3 40 3C D3 40 : 76
C2C8 : C9 00 21 00 4F 11 01 4F : 24
C2D0 : 01 9E 01 75 ED B0 36 20 : 9A
C2D8 : 3E AA 12 0E 5E ED 41 79 : A7
C2E0 : 21 00 80 11 01 80 01 FF : D5
C2E8 : 3F 75 ED B0 3D 4F FE 5B : E0
C2F0 : 20 EB D3 5F DB 09 07 30 : 0A
C2F8 : FB C3 5D 26 00 7C 26 02 : 9F
C300 : 16 00 5D 29 29 19 29 29 : F3
C308 : 29 29 5F 19 C9 00 00 00 : 5E
C310 : 3A 00 50 B7 C0 DB 00 EE : 9D
C318 : FF 28 10 21 26 20 11 28 : B2
C320 : 00 06 07 0F 38 12 19 10 : 72
C328 : FA 18 0D DB 01 21 66 21 : 8E
C330 : 0F 30 05 0F D8 21 8E 21 : EE
C338 : DB 08 07 17 30 0F 0F 38 : 82
C340 : 15 11 FF 4F 7E ED 44 C8 : EE
C348 : 12 2B 1B 18 F7 EB 21 9F : 1D
C350 : 50 CB 06 EB 30 EB 11 FF : 4A
C358 : 4F 01 27 00 ED B8 C9 CD : CD
C360 : 3C 26 21 9E 50 DB 08 AE : 25
C368 : E6 20 C8 AE 77 FE 20 9F : DB
C370 : 21 4E 80 11 50 00 06 C8 : 51
C378 : D3 5E 77 19 10 FC D3 5F : 3A
C380 : C9 00 00 00 08 1A 86 E8 : 9C
C388 : 2F C6 67 FE CD D0 D9 6F : 8A
C390 : 61 CD FD 21 08 11 B0 FF : 67
C398 : 47 E6 3C CB 74 D3 5C 20 : 52
C3A0 : 01 77 78 19 06 04 CB 74 : B5
C3A8 : 20 0B 77 19 10 F8 CB 74 : 6D
C3B0 : 20 03 E6 3C 77 D3 5F D9 : 3A
C3B8 : C9 00 00 00 08 7E CD C3 : 5A
C3C0 : 22 08 1A 2F C6 65 D9 6F : 69
C3C8 : 61 CD FD 21 08 11 B0 FF : 9F
C3D0 : D3 5D 77 19 77 D3 5F D9 : D5
C3D8 : C9 00 00 00 CD CA 21 0E : 2A
C3E0 : 4E D9 21 4E 4F 11 4F 4F : 37
C3E8 : 7D D6 25 E6 FD 3E 5C CC : 6C
C3F0 : 77 26 32 9E 22 AF CD 84 : 42
C3F8 : 22 AF CD BC 22 24 14 3E : AD
C400 : 18 CD BC 22 3E 7E CD 84 : 94
C408 : 22 25 2D 15 1C D9 0D D9 : 30
C410 : F2 E8 22 CD 10 22 21 00 : F0
C418 : 50 11 00 4F 01 9E 00 ED : 18
C420 : B0 21 9C 50 11 9D 50 01 : A0
C428 : C5 00 ED B8 11 4E 50 CD : D2
C430 : 64 26 CD 44 23 CD 5F 22 : 00
C438 : DB 09 07 D2 65 25 E6 02 : 2B
C440 : 28 F3 18 9B 11 00 10 7A : 6D
C448 : B3 1B 20 FB C9 00 1A 86 : 5E
C450 : D9 E2 57 23 1F 18 02 CB : 4D
C458 : 2F CB 2F CB 2F 3C 47 CB : 8D
C460 : 2F CB 2F CB 2F 81 81 C6 : 0F
C468 : 4C 6F 26 9E 78 E6 07 87 : 97
C470 : C6 93 5F 16 21 FE 99 38 : F2
C478 : 0B E5 CD 84 23 D9 E1 23 : 7D
C480 : 7B C6 0A 5F 7D D6 50 FE : 8F
C488 : 50 30 22 C5 01 50 00 1A : 1E
C490 : 13 D3 5C AE 77 09 1A AE : 8C
C498 : 77 09 1A AE 77 09 1A AE : EC
C4A0 : 77 09 1A AE 77 09 1B 1A : 61
C4A8 : AE 77 D3 5F C1 D9 C9 7E : A4
C4B0 : D9 26 92 CD BA 23 1A D9 : A2
C4B8 : 26 AB CB 2F CB 2F CB 2F : 3B
C4C0 : C6 03 47 CB 2F CB 2F CB : 53
C4C8 : 2F 81 81 C6 6C 6F 78 E6 : BC
C4D0 : 07 C6 B0 5F 16 21 FE B7 : 5C
C4D8 : 20 08 E5 CD E2 23 D9 E1 : 35
C4E0 : 23 13 7D D6 70 FE 50 30 : 1B
C4E8 : 10 C5 01 50 00 1A D3 5D : 1C
C4F0 : AE 77 09 1A AE 77 D3 5F : 53
C4F8 : C1 D9 C9 00 00 00 D9 79 : 71
C500 : D3 5E AE 77 1A A9 12 D3 : C3
C508 : 5F D9 C9 00 00 00 D9 CB : 72
C510 : 01 D9 D0 D9 2B 1B D9 C9 : 40
C518 : 00 00 00 D9 CB 09 D9 D0 : 33
C520 : D9 23 13 D9 C9 00 00 00 : 96
C528 : 21 28 4F 11 29 4F D9 21 : 08
C530 : 4E 94 11 7E AA E5 D5 0E : D8
C538 : 08 D9 CD FE 23 06 1B CD : BA
C540 : 5D 24 CD FE 23 10 F8 D5 : 51
C548 : CD 6F 24 D1 2B 13 D9 D1 : 26
C550 : E1 2B 2B 1B 1B CB 44 28 : B9
C558 : DC C9 00 00 00 D9 79 01 : 15
C560 : 50 00 09 EB 01 B0 FF 09 : 22
C568 : EB 4F D9 C9 00 00 00 1A : 23
C570 : 86 4F 11 00 00 EA 8B 24 : B4
C578 : FA 83 24 FE 40 D2 E7 24 : F9
C580 : C3 94 24 FE C0 D2 AE 24 : 22
C588 : C3 24 25 FA E7 24 C3 24 : 45
C590 : 25 00 00 00 06 20 7B 81 : 9C
C598 : 5F DC 1B 24 7A C6 40 57 : AE
C5A0 : 30 06 CD 5D 24 CD FE 23 : D7
C5A8 : 10 EC C9 00 00 00 FE D9 : 09
C5B0 : 30 04 7D 3D 28 17 06 20 : C8
C5B8 : 7B 91 5F D4 0E 24 7A C6 : 2E
C5C0 : 40 57 30 06 CD 5D 24 CD : 6D
C5C8 : FE 23 10 EC C9 7B 91 5F : DE
C5D0 : 38 04 CD 0E 24 D8 7A C6 : E8
C5D8 : 40 57 30 F1 CD 5D 24 CD : 70
C5E0 : FE 23 18 E9 00 00 00 FE : C5
C5E8 : 60 38 05 7D FE 28 28 17 : 2C
C5F0 : 06 20 7A C6 40 57 DC 5D : EB
C5F8 : 24 7B 81 5F 30 06 CD 1B : 5A
C600 : 24 CD FE 23 10 EC C9 06 : A3
C608 : 02 7A C6 40 57 DC 5D 24 : 04
C610 : 7B 81 5F 30 F4 CD 1B 24 : 61
C618 : 30 02 05 C8 CD FE 23 18 : E3
C620 : E8 00 00 00 FE 59 7D 3D : DF
C628 : 28 1E 30 05 06 03 3D 28 : D7
C630 : 19 06 20 7A C6 40 57 DC : E8
C638 : 5D 24 7B 81 5F 38 06 CD : E5
C640 : 0E 24 CD FE 23 10 EC C9 : EB
C648 : 06 01 7A C6 40 57 DC 5D : 25
C650 : 24 7B 81 5F 38 F4 CD 0E : 9C
C658 : 24 30 02 05 C8 CD FE 23 : 2F
C660 : 18 E8 00 00 00 CD CA 21 : DE
C668 : 0E 29 D9 21 28 50 11 29 : 11
C670 : 50 CD 4E 23 CD AF 23 2B : 8E
C678 : 13 D9 0D 79 D9 3D 20 F1 : D7
C680 : 0E 29 D9 21 28 4F 11 29 : 28
C688 : 4F CD 4E 23 CD AF 23 24 : 9E
C690 : 14 CD 4E 23 CD AF 23 25 : 6C
C698 : 2D 15 1C D9 0D D9 20 E9 : 84
C6A0 : CD 10 22 21 00 50 11 00 : E7
C6A8 : 4F 01 52 00 ED B0 21 50 : 1E
C6B0 : 50 11 51 50 01 79 00 ED : DF
C6B8 : B8 11 28 50 CD 64 26 CD : E3
C6C0 : 44 23 CD 44 23 CD 5F 22 : 6F
C6C8 : DB 09 07 D2 DC 22 07 30 : 80
C6D0 : 06 E6 04 28 F0 18 A9 CD : 2C
C6D8 : 28 24 DB 09 07 D2 DC 22 : A5
C6E0 : 07 30 F7 CD 28 24 18 E0 : E5
C6E8 : DB 40 E6 02 CC DB 1F AF : 26
C6F0 : D3 32 3E 0A 32 4B 1F 3E : DD
C6F8 : C0 32 78 1F 32 E2 21 32 : AE
C700 : E5 21 32 72 22 3E 03 32 : 06
C708 : FF 21 3E 28 32 9F 22 32 : 7A
C710 : A8 22 32 B0 22 3E DE 32 : F3
C718 : 6B 23 3E D2 32 B2 23 3E : C2
C720 : EB 32 B9 23 3E D4 32 31 : 55
C728 : 24 3E EA 32 34 24 CD 95 : 27
C730 : 26 01 51 0B ED A3 CA DC : B0
C738 : 22 0C 18 F8 DB 01 07 30 : 50
C740 : 1C E6 18 E8 2A 45 23 FE : 99
C748 : 08 28 09 01 C0 FF 09 D0 : E1
C750 : 22 45 23 C9 01 40 00 09 : B4
C758 : D8 22 45 23 C9 21 00 10 : 7B
C760 : 22 45 23 C9 DB 08 E6 10 : 53
C768 : 28 0A 1A 21 9E 50 CB 6E : C3
C770 : 20 02 ED 44 13 12 C9 DB : 53
C778 : 09 07 07 E6 01 C6 5C 32 : 91
C780 : 9E 22 AF CD 84 22 3A 9E : 01
C788 : 22 EE 01 C9 00 02 20 04 : 4F
C790 : 40 02 02 03 10 21 30 C8 : C7
C798 : 11 00 F4 01 D0 07 ED B0 : D9
C7A0 : AF D3 51 21 24 27 01 50 : F7
C7A8 : 05 ED B3 01 64 02 ED B3 : 1B
C7B0 : 01 65 02 ED B3 01 51 03 : D4
C7B8 : ED B3 3E E4 D3 68 3E 07 : C1
C7C0 : D3 30 21 8D 26 4E ED 78 : 11
C7C8 : EE FF 20 13 DB 00 2F E6 : 9F
C7D0 : 07 28 F3 0F 38 20 21 05 : 46
C7D8 : 27 0F D8 21 18 27 C9 23 : F9
C7E0 : BE 20 DF 23 7D FE 95 20 : B7
C7E8 : DC ED 5E 3E 27 ED 47 3E : AD
C7F0 : 02 D3 E6 D3 E4 FB 3E 5D : BF
C7F8 : 32 01 24 21 10 27 C9 00 : 37
C800 : 00 00 48 1F 00 00 00 00 : 2F
C808 : 00 04 02 04 01 04 02 04 : E5
C810 : 00 00 00 00 07 07 07 07 : F4
C818 : 00 00 00 00 07 03 07 04 : F5
C820 : 07 03 07 00 CE 98 67 DE : A4
C828 : 20 00 F4 CF 87 43 80 20 : 3D
C830 : 57 41 56 45 20 53 49 4D : 34
C838 : 55 4C 41 54 4F 52 20 20 : 17
C840 : 20 20 20 20 20 20 20 20 : 08
C848 : 20 20 20 20 20 20 20 20 : 10
C850 : 20 20 20 20 20 20 20 20 : 18
C858 : 20 20 20 20 20 20 20 20 : 20
C860 : 20 20 20 20 20 20 20 20 : 28
C868 : 20 20 20 20 20 20 20 20 : 30
C870 : 20 20 20 20 20 20 20 20 : 38
C878 : 20 20 20 20 20 20 20 20 : 40
C880 : 43 6F 70 79 72 69 67 68 : 8D
C888 : 74 20 4D 43 4D 4C 58 58 : BD
C890 : 58 56 20 28 43 29 20 62 : 3C
C898 : 79 20 4B 2E 59 61 73 75 : 14
C8A0 : 6F 6B 61 20 20 20 20 20 : 43
C8A8 : 20 20 20 20 20 20 20 20 : 70
C8B0 : 20 20 20 20 20 20 20 20 : 78
C8B8 : 20 20 20 20 20 20 20 20 : 80
C8C0 : 20 20 20 20 20 20 20 20 : 88
C8C8 : 20 20 20 20 20 20 20 20 : 90
C8D0 : 20 20 20 20 20 20 20 20 : 98
C8D8 : 20 20 20 20 20 20 20 20 : A0
C8E0 : 20 20 20 20 20 20 20 20 : A8
C8E8 : 20 20 20 20 20 20 20 20 : B0
C8F0 : 20 20 20 20 20 20 20 20 : B8
C8F8 : 20 20 20 20 20 20 20 20 : C0
C900 : 20 20 20 20 20 20 20 20 : C9
C908 : 20 20 20 20 20 20 20 20 : D1
C910 : 20 20 20 20 20 20 20 20 : D9
C918 : 20 20 20 20 20 20 20 20 : E1
C920 : 20 20 98 95 95 95 95 95 : AA
C928 : 95 95 95 95 95 95 95 95 : 99
C930 : 95 95 95 95 95 95 95 95 : A1
C938 : 95 95 95 95 95 95 95 95 : A9
C940 : 95 95 95 95 95 95 99 20 : 40
C948 : 98 95 95 95 95 95 95 95 : BC
C950 : 95 95 95 95 95 95 95 95 : C1
C958 : 95 95 95 95 95 95 95 95 : C9
C960 : 95 95 95 95 95 95 95 95 : D1
C968 : 95 95 95 95 95 99 20 20 : F3
C970 : 20 20 96 20 68 98 95 99 : 5D
C978 : 98 95 99 98 95 99 20 20 : 0D
C980 : 20 20 20 20 20 20 20 20 : 49
C988 : 20 20 20 20 20 20 20 20 : 51
C990 : 20 20 20 20 20 20 96 20 : CF
C998 : 96 20 98 95 95 95 95 99 : 9C
C9A0 : 20 20 20 20 20 20 20 20 : 69
C9A8 : 20 20 20 20 98 95 99 20 : D7
C9B0 : 20 20 20 20 20 20 20 20 : 79
C9B8 : 20 20 20 20 20 96 20 20 : F7
C9C0 : 20 20 96 20 69 96 37 96 : 4B
C9C8 : 96 38 96 96 39 96 20 20 : 9A
C9D0 : 20 20 20 20 20 20 20 20 : 99
C9D8 : 20 20 20 20 20 20 20 20 : A1
C9E0 : 20 20 20 20 20 20 96 20 : 1F
C9E8 : 96 20 96 53 54 4F 50 96 : D9
C9F0 : 20 53 74 6F 70 20 20 20 : DF
C9F8 : 20 20 20 20 96 2A 96 20 : B7
CA00 : 41 63 63 65 6C 65 72 61 : DA
CA08 : 74 65 20 20 20 96 20 20 : E1
CA10 : 20 20 96 20 67 9A 95 9B : 01
CA18 : 9A 95 9B 9A 95 9B 20 20 : B6
CA20 : 98 95 95 95 95 99 20 20 : AF
CA28 : 20 20 20 20 20 20 20 20 : F2
CA30 : 20 20 20 20 20 20 96 20 : 70
CA38 : 96 20 9A 95 95 95 95 9B : 41
CA40 : 20 20 20 20 20 20 20 20 : 0A
CA48 : 20 20 20 20 9A 95 9B 20 : 7C
CA50 : 20 20 20 20 20 20 20 20 : 1A
CA58 : 20 20 20 20 20 96 20 20 : 98
CA60 : 20 20 96 20 68 98 95 99 : 4E
CA68 : 98 95 99 98 95 99 20 20 : FE
CA70 : 96 43 54 52 4C 96 20 20 : DB
CA78 : 52 65 76 65 72 73 65 20 : 3E
CA80 : 70 75 6C 73 65 20 96 20 : 49
CA88 : 96 20 98 95 95 95 95 99 : 8D
CA90 : 20 20 20 20 20 20 20 20 : 5A
CA98 : 20 20 20 20 98 95 99 20 : C8
CAA0 : 20 20 20 20 20 20 20 20 : 6A
CAA8 : 20 20 20 20 20 96 20 20 : E8
CAB0 : 20 20 96 20 1E 96 34 96 : EE
CAB8 : 96 35 96 96 36 96 20 20 : 85
CAC0 : 9A 95 95 95 95 9B 20 20 : 53
CAC8 : 20 20 20 20 20 20 20 20 : 92
CAD0 : 20 20 20 20 20 20 96 20 : 10
CAD8 : 96 20 96 3C 95 95 9B 96 : 85
CAE0 : 20 52 65 73 74 6F 72 65 : AE
CAE8 : 20 20 20 20 96 2B 96 20 : A9
CAF0 : 42 72 61 6B 65 20 20 20 : FF
CAF8 : 20 20 20 20 20 96 20 20 : 38
CB00 : 20 20 96 20 21 9A 95 9B : AC
CB08 : 9A 95 9B 9A 95 9B 20 20 : A7
CB10 : 98 95 95 95 95 95 99 20 : 15
CB18 : 20 20 20 20 20 20 20 20 : E3
CB20 : 20 20 20 20 20 20 96 20 : 61
CB28 : 96 20 9A 95 95 95 95 9B : 32
CB30 : 20 20 20 20 20 20 20 20 : FB
CB38 : 20 20 20 20 9A 95 9B 20 : 6D
CB40 : 20 20 20 20 20 20 20 20 : 0B
CB48 : 20 20 20 20 20 96 20 20 : 89
CB50 : 20 20 96 20 21 98 95 99 : F8
CB58 : 98 95 99 98 95 99 20 20 : EF
CB60 : 96 53 48 49 46 54 96 20 : F5
CB68 : 46 75 6C 6C 20 77 61 76 : 34
CB70 : 65 20 20 20 20 20 96 20 : F6
CB78 : 9A 95 95 95 95 95 95 95 : F0
CB80 : 95 95 95 95 95 95 95 95 : F3
CB88 : 95 53 50 45 45 44 95 95 : 83
CB90 : 95 95 95 95 95 95 95 95 : 03
CB98 : 95 95 95 95 95 9B 20 20 : 27
CBA0 : 20 20 96 20 21 96 31 96 : DF
CBA8 : 96 32 96 96 33 96 20 20 : 70
CBB0 : 9A 95 95 95 95 95 9B 20 : B9
CBB8 : 20 20 20 20 20 20 20 20 : 83
CBC0 : 20 20 20 20 20 20 96 20 : 01
CBC8 : 98 95 95 95 95 95 95 95 : 3E
CBD0 : 95 95 95 95 95 95 95 95 : 43
CBD8 : 95 95 95 95 95 95 95 95 : 4B
CBE0 : 95 95 95 95 95 95 95 95 : 53
CBE8 : 95 95 95 95 95 99 20 20 : 75
CBF0 : 20 20 96 20 21 9A 95 9B : 9C
CBF8 : 9A 95 9B 9A 95 9B 20 20 : 97
CC00 : 20 20 20 20 20 20 20 20 : CC
CC08 : 20 20 20 20 20 20 20 20 : D4
CC10 : 20 20 20 20 20 20 96 20 : 52
CC18 : 96 20 98 95 95 95 99 20 : AA
CC20 : 20 20 20 20 20 20 20 20 : EC
CC28 : 20 20 20 20 20 20 20 20 : F4
CC30 : 20 20 20 20 20 20 20 20 : FC
CC38 : 20 20 20 20 20 96 20 20 : 7A
CC40 : 20 20 96 20 20 2D 2D 2D : A9
CC48 : 2D 1C 6C 6F 6E 67 20 20 : 4D
CC50 : 20 20 20 20 20 20 20 20 : 1C
CC58 : 20 20 20 20 20 20 20 20 : 24
CC60 : 20 20 20 20 20 20 96 20 : A2
CC68 : 96 20 96 45 53 43 96 20 : 11
CC70 : 20 20 43 68 61 6E 67 65 : C2
CC78 : 20 6D 6F 64 65 20 20 20 : 69
CC80 : 20 20 20 20 20 20 20 20 : 4C
CC88 : 20 20 20 20 20 96 20 20 : CA
CC90 : 20 20 9A 95 95 95 95 95 : 1F
CC98 : 95 95 95 95 95 95 95 95 : 0C
CCA0 : 4F 53 43 49 4C 41 54 45 : C0
CCA8 : 95 95 95 95 95 95 95 95 : 1C
CCB0 : 95 95 95 95 95 95 9B 20 : B5
CCB8 : 96 20 9A 95 95 95 9B 20 : 4E
CCC0 : 20 20 20 20 20 20 20 20 : 8C
CCC8 : 20 20 20 20 20 20 20 20 : 94
CCD0 : 20 20 20 20 20 20 20 20 : 9C
CCD8 : 20 20 20 20 20 96 20 20 : 1A
CCE0 : 20 20 98 95 95 95 95 95 : 6D
CCE8 : 95 95 95 95 95 95 95 95 : 5C
CCF0 : 95 95 95 95 95 95 95 95 : 64
CCF8 : 95 95 95 95 95 95 95 95 : 6C
CD00 : 95 95 95 95 95 95 99 20 : 04
CD08 : 96 20 80 80 80 80 80 80 : 8B
CD10 : 80 9C 4D 61 72 6B 65 72 : 5B
CD18 : 20 20 20 28 54 72 61 6E : 02
CD20 : 73 76 65 72 73 65 20 6D : 12
CD28 : 6F 64 65 29 20 96 20 20 : 4C
CD30 : 20 20 96 20 98 95 95 99 : 4E
CD38 : 20 20 20 20 20 20 20 20 : 05
CD40 : 20 20 20 20 20 20 20 20 : 0D
CD48 : 20 20 20 20 20 20 20 20 : 15
CD50 : 20 20 20 20 20 20 96 20 : 93
CD58 : 96 20 88 73 70 61 63 65 : 6F
CD60 : 97 92 4F 73 63 69 6C 61 : B1
CD68 : 74 6F 72 20 64 69 73 70 : 5A
CD70 : 6C 61 63 65 6D 65 6E 74 : 86
CD78 : 20 20 20 20 20 96 20 20 : BB
CD80 : 20 20 96 20 96 B6 C5 96 : EA
CD88 : 20 20 20 46 69 78 65 64 : A5
CD90 : 20 20 20 20 20 20 20 20 : 5D
CD98 : 20 20 20 20 20 20 20 20 : 65
CDA0 : 20 20 20 20 20 20 96 20 : E3
CDA8 : 96 20 94 94 94 94 94 94 : A3
CDB0 : 94 9E 20 20 20 20 20 20 : 6F
CDB8 : 20 28 4C 6F 6E 67 69 74 : 3A
CDC0 : 75 64 69 6E 61 6C 20 6D : 97
CDC8 : 6F 64 65 29 20 96 20 20 : EC
CDD0 : 20 20 96 20 9A 95 95 9B : F2
CDD8 : 20 20 20 20 20 20 20 20 : A5
CDE0 : 20 20 20 20 20 20 20 20 : AD
CDE8 : 20 20 20 20 20 20 20 20 : B5
CDF0 : 20 20 20 20 20 20 96 20 : 33
CDF8 : 9A 95 95 95 95 95 95 95 : 72
CE00 : 95 95 95 53 50 45 43 49 : 01
CE08 : 41 4C 20 46 55 4E 43 54 : 03
CE10 : 49 4F 4E 95 95 95 95 95 : AD
CE18 : 95 95 95 95 95 9B 20 20 : AA
CE20 : 20 20 96 20 98 95 95 95 : 3B
CE28 : 95 99 20 20 20 20 20 20 : E4
CE30 : 20 20 20 20 20 20 20 20 : FE
CE38 : 20 20 20 20 20 20 20 20 : 06
CE40 : 20 20 20 20 20 20 96 20 : 84
CE48 : 20 20 20 20 20 20 20 20 : 16
CE50 : 20 20 20 20 20 20 20 20 : 1E
CE58 : 20 20 20 20 20 20 20 20 : 26
CE60 : 20 20 20 20 20 20 20 20 : 2E
CE68 : 20 20 20 20 20 20 20 20 : 36
CE70 : 20 20 96 20 96 47 52 50 : B3
CE78 : 48 96 20 4E 6F 6E 2D 72 : 0E
CE80 : 65 66 6C 65 63 74 69 6F : 99
CE88 : 6E 20 20 20 20 20 20 20 : A4
CE90 : 20 20 20 20 20 20 96 20 : D4
CE98 : 20 20 20 20 20 20 30 3A : 90
CEA0 : 20 4D 6F 6E 6F 63 68 72 : 64
CEA8 : 6F 6D 65 20 20 20 20 20 : 57
CEB0 : 20 20 20 20 20 20 20 20 : 7E
CEB8 : 20 20 20 20 20 20 20 20 : 86
CEC0 : 20 20 96 20 9A 95 95 95 : DD
CEC8 : 95 9B 20 20 20 20 20 20 : 86
CED0 : 20 20 20 20 20 20 20 20 : 9E
CED8 : 20 20 20 20 20 20 20 20 : A6
CEE0 : 20 20 20 20 20 20 96 20 : 24
CEE8 : 20 20 20 20 20 20 31 3A : E1
CEF0 : 20 43 6F 6C 6F 72 20 28 : 25
CEF8 : 67 72 65 65 6E 2C 72 65 : DA
CF00 : 64 2C 62 6C 75 65 29 20 : 50
CF08 : 20 20 20 20 20 20 20 20 : D7
CF10 : 20 20 9A 95 95 95 95 95 : A2
CF18 : 95 95 95 95 95 95 45 44 : EE
CF20 : 47 45 20 43 4F 4E 44 49 : 08
CF28 : 54 49 4F 4E 95 95 95 95 : 85
CF30 : 95 95 95 95 95 95 9B 20 : 38
CF38 : 20 20 20 20 20 20 32 3A : 33
CF40 : 20 43 6F 6C 6F 72 20 28 : 76
CF48 : 77 68 69 74 65 2C 6D 61 : 32
CF50 : 67 65 6E 74 61 2C 67 72 : 33
CF58 : 65 65 6E 29 20 20 20 20 : 08
CF60 : 20 20 20 20 20 20 20 20 : 2F
CF68 : 20 20 20 20 20 20 20 20 : 37
CF70 : 20 20 20 20 20 20 20 20 : 3F
CF78 : 20 20 20 20 20 20 20 20 : 47
CF80 : 20 20 20 20 20 20 20 20 : 4F
CF88 : 20 20 20 20 20 20 20 20 : 57
CF90 : 20 20 20 20 20 20 20 20 : 5F
CF98 : 20 20 20 20 20 20 20 20 : 67
CFA0 : 20 20 20 20 20 20 20 20 : 6F
CFA8 : 20 20 20 20 20 20 20 20 : 77
CFB0 : 20 20 20 20 20 20 20 20 : 7F
CFB8 : 20 20 20 20 20 20 20 20 : 87
CFC0 : 20 20 20 20 20 20 20 20 : 8F
CFC8 : 20 20 20 20 20 20 20 20 : 97
CFD0 : 20 20 20 20 20 20 20 20 : 9F
CFD8 : 20 20 20 20 20 20 20 20 : A7
CFE0 : 20 20 20 20 20 20 20 20 : AF
CFE8 : 20 20 20 20 20 20 20 20 : B7
CFF0 : 20 20 20 20 20 20 20 20 : BF
CFF8 : 20 20 20 20 20 20 20 20 : C7



*** CHECKSUM PROGRAM ***

10 FOR A=&HC000 TO &HCFFF STEP 8
20 A$=HEX$(A)
30 C=VAL("&H"+LEFT$(A$,2))+VAL("&H"+RIGHT$(A$,2))
40 LPRINT A$;"-";HEX$(A+7);" ";
50 FOR B=A TO A+7
60 C=C+PEEK(B)
70 NEXT
80 LPRINT RIGHT$(HEX$(C),2)
90 NEXT

プログラムの起動はmonコマンドでGC000だが、多少トリッキーな動作となっている。この部分をZ80っぽく見てみよう。

C000  F3        DI
C001  31FF7F    LD SP,7FFFH
C004  3A0200    LD A,(0002H)
C007  0131FB    LD BC,FB31H
C00A  ED41     OUT (C),B
C00C  2148C0    LD HL,C048H
C00F  11481F    LD DE,1F48H
C012  01E807    LD BC,07E8H
C015  EDBO    LDIR
C017  FEA0      CP A0H        # N-88 BASIC
C019  CAE825    JP Z,25E8H
C01C  FEFE      CP FEH        # N80SR-BASIC
C01E  CA2E26    JP Z,262EH
C021  31FFFF    LD SP,FFFFH
C024  AF       XOR A
C025  D331     OUT (31H),A
C027  2137C0    LD HL,C037H
C02A  0611      LD B,17
C02C  7E        LD A,(HL)
C02D  DF       RST 0018H
C02E  23       INC HL
C02F  10FB    DJNZ C02CH
C031  DB09      IN A,(09H)
C033  0F      RRCA
C034  38FB      JR C,C031H
C036  C7       RST 0000H
C037  4241534943206D6F6465206572726F7207
#     B A S I C   m o d e   e r r o r [BEEP]

0000H~7FFFHのメモリバンクをROMからRAMに切り替えて、C048H~C82FHのプログラムを1F48H~272FHにコピーしたあと、PC-8801ならば25E8Hに、PC-8001mkⅡSRならば262EHにジャンプする。どちらでも無かった場合(あるいはN-BASICで起動してしまった場合)は、0000H~7FFFHのメモリバンクをROMに戻して、「BASIC mode error」と表示する。コピー後の25E8Hや262EHも見てみよう。

25E8  DB40      IN A,(40H)
25EA  E602     AND 02H
25EC  CCDB1F  CALL Z,1FDBH
25EF  AF       XOR A
25F0  D332     OUT (32H),A
25F2  3E0A      LD A,0AH
25F5  324B1F    LD (1F4BH),A
25F7  3EC0      LD A,C0H
25F9  32781F    LD (1F78H),A
25FC  32E221    LD (21E2H),A
25FF  32E521    LD (21E5H),A
2602  327222    LD (2272H),A
2605  3E03      LD A,03H
2607  32FF21    LD (21FFH),A
260A  3E28      LD A,28H
260C  329F22    LD (229FH),A
260F  32A822    LD (22A8H),A
2612  32B022    LD (22B0H),A
2615  3EDE      LD A,DEH
2617  326B23    LD (236BH),A
261A  3ED2      LD A,D2H
261C  32B223    LD (23B2H),A
261F  3EEB      LD A,EBH
2621  32B923    LD (23B9H),A
2624  3ED4      LD A,D4H
2626  323124    LD (2431H),A
2629  3EEA      LD A,EAH
262B  323424    LD (2434H),A

262E  CD9526  CALL 2695H
2631  01510B    LD BC,0B51H
2634  EDA3    OUTI
2636  CADC22    JP Z,22DCH
2639  0C       INC C
263A  18F8      JR 2634H

268D  0220       # E
268F  0440       # V
2691  0202       # A
2693  0310       # L

2695  2130C8    LD HL,C830H
2698  1100F4    LD DE,F400H
269B  01D007    LD BC,07D0H
269D  EDB0    LDIR
26A0  AF       XOR A
26A1  D351     OUT (51H),A
26A3  212427    LD HL,2724H
26A6  015005    LD BC,0550H
26A9  EDB3    OTIR
26AB  016402    LD BC,0264H
26AE  EDB3    OTIR
26B0  016502    LD BC,0265H
26B3  EDB3    OTIR
26B5  015103    LD BC,0351H
26B8  EDB3    OTIR
26BA  3EE4      LD A,E4H
26BC  D368     OUT (68H),A
26BE  3E07      LD A,07H
26C0  D330     OUT (30H),A
26C2  218D26    LD HL,268DH
26C5  4E        LD C,(HL)
26C6  ED78      IN A,(C)
26C8  EEFF     XOR FFH
26CA  2013      JR NZ,26DFH
26CC  DB00      IN A,(00H)
26CE  2F       CPL
26CF  E607     AND 07H
26D1  28F3      JR Z,26C6H
26D3  0F      RRCA
26D4  3820      JR C,26F6H
26D6  210527    LD HL,2705H
26D9  0F      RRCA
26DA  D8       RET C
26DB  211827    LD HL,2718H
26DE  C9       RET
26DF  23       INC HL
26E0  BE        CP (HL)
26E1  20DF      JR NZ,26C2H
26E3  23       INC HL
26E4  7D        LD A,L
26E5  FE95      CP 95H
26E7  20DC      JR NZ,26C5H
26E9  ED5E      IM 2
26EB  3E27      LD A,27H
26ED  ED47      LD I,A
26EF  3E02      LD A,02H
26F1  D3E6     OUT (E6H),A
26F3  D3E4     OUT (E4H),A
26F5  FB        EI
26F6  3E5D      LD A,5DH
26F8  320124    LD (2401H),A
26FB  211027    LD HL,2710H
26FE  C9       RET

2702  481F       # IM 2 entry 1F48H

2705  0000000004020401040204  # 1: Color(green,red,blue)
2710  0000000007070707        # 0: Monochrome
2718  0000000007030704070307  # 2: Color(white,magenta,green)

2724  CE9867DE20 # OUT (50H)
2729  00F4       # OUT (64H)
272B  CF87       # OUT (65H)
272D  438020     # OUT (51H)

1FDB  216F58    LD HL,586FH
1FDE  222627    LD (2726H),HL
1FE1  C9       RET

このプログラムは、PC-8001mkⅡSRの640×200ドットモードで開発したものなので、PC-8801で動かす場合には、あちこちパッチを当てまくっている。特に、GVRAMのメモリバンクが、PC-8001mkⅡSRでは8000H~BFFFHなのに対し、PC-8801ではC000H~FFFFHなので、プログラム全体を0000H~7FFFHに配置する必要があったのだ。その一方、メニュー画面はPC-8001・PC-8801の基本設計を無視して、F400Hから80×25バイトつまりF400H~FBCFHに再配置しており、アトリビュートエリアが無い。

なお、メニュー画面において、テンキー0・1・2の代わりにevalと打ち込むと、STOPキーで画面のハードコピーがプリントアウトできるようになる。ただし、ドットマトリクスプリンタが想定されている上に、Z80の未定義命令「DD CB xx 07」と「DD CB xx 03」を使っているので注意されたい。

0
0
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
0
0

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?