TSYS-S1漢字ターミナルの第二水準漢字対応改造

こちらの改造で第二水準漢字がS1/30で扱えるようになったので通信ソフトでも第二水準漢字が扱えるものが欲しくなりました。

そこで、工学社のI/O誌 1985年11月号掲載のS1用漢字ターミナルソフトをAIの力を借りて第二水準漢字対応に改造しました。
(今回使用したのはClaude Codeのエージェントです GeminiからClaudeに乗り換えました^^;;;)

このTSYS-S1ターミナルは疑似400ライン表示で漢字が表示できるので1画面の情報量はPC-9801等の16ビット機とも遜色ない情報量です(^^)
長残像のC14-2190なのでインタレースでもちらつきなし、さらにMB-S1model20さんから頂いたのは前面フィルタ付きの2190Aなので最強です。

今回の改造で良い感じで第二水準漢字も表示できるようになったので、S1で最新ニュースなどを楽しめるように KKネット情報取得コントローラをGooole RSSニュース対応に改造しました。
以前のバージョンの@nifty RSSニュースは廃止しました(^^;;;

令和の時代に最新ニュースをS1で閲覧できる喜び(^^)
これでS1活用の場面も広がります(^^)

BASIC部はI/O誌85年11月号337ページのリストそのままで変更ありません。
338ページのTSYS-S1Mの機械語部分のみ下記に差替えました。
ほとんどの処理はTSYS-S1Mをそのまま流用し、コード変換部分にSasajiさんのDSPKANM4.asmの変換ロジックを参考にしたものを利用させて頂いています。

使用したアセンブラはいつものシステムロード製SASMアセンブラです。

機械語部分の全リストを貼ります
一応、期待した動作はしているようですがもっと良い改造法や改善した方がいい点などありましたらご指摘下さい。

Page   1 (26-09-20 20:51:59) TSYS-S1TB.asm
    1:                          ; TSYS-S1TB.ASM
    2:                                            PAGE          999
    3:                          ;
    4:                          ;===========================================================================
    5:                          ; I/O誌1985/11月号 P336~ TSYS-S1M の第二水準漢字表示対応改造 for SASM6809用
    6:                          ; Version : 1.0.2
    7:                          ; 参考:Sasajiさん DSPKANM4.asm
    8:                          ;===========================================================================
    9:                          
   10:                          ; --- CONST
   11: 0000'     FF75           KANJIH            EQU           $FF75           ;第一水準漢字ROM I/O
   12: 0000'     FF72           KANJI2            EQU           $FF72           ;第二水準漢字ROM I/O
   13: 0000'     FF74           KANJI_SEL         EQU           $FF74           ;第一/第二水準切替
   14: 0000'     0012           KANJI_SEL_LV2     EQU           $12             ;第二水準選択
   15: 0000'     C807           KJ_LEVEL2         EQU           $C856           ;表示管理用ワーク
   16:                          
   17: C000'                                      ORG           $C000
   18:                          
   19: C000' E6 80              USR_ENTRY:        LDB           ,X+
   20: C002' F7 C804                              STB           $C804
   21: C005' AE 84                                LDX           ,X
   22: C007' B6 C805            CHAR_LOOP:        LDA           $C805
   23: C00A' 10 27 01D3                           LBEQ          CHAR_DISPATCH
   24: C00E' E6 80                                LDB           ,X+
   25: C010' 10 27 0316                           LBEQ          LOOP_TAIL
   26: C014' C1 40                                CMPB          #$40
   27: C016' 25 30                                BCS           BAD_2NDBYTE
   28: C018' C1 FD                                CMPB          #$FD
   29: C01A' 24 2C                                BCC           BAD_2NDBYTE
   30: C01C' C1 7F                                CMPB          #$7F
   31: C01E' 27 28                                BEQ           BAD_2NDBYTE
   32: C020' C1 80                                CMPB          #$80
   33: C022' 25 05                                BCS           JIS_ADJ_HI
   34: C024' C1 9F                                CMPB          #$9F
   35: C026' 24 01                                BCC           JIS_ADJ_HI
   36: C028' 5A                                   DECB
   37: C029' 48                 JIS_ADJ_HI:       ASLA
   38: C02A' 4A                                   DECA
   39: C02B' C1 9F                                CMPB          #$9F
   40: C02D' 25 03                                BCS           JIS_ADJ_LO
   41: C02F' C0 5F                                SUBB          #$5F
   42: C031' 4C                                   INCA
   43: C032' C0 1F              JIS_ADJ_LO:       SUBB          #$1F
   44: C034' 81 50                                CMPA          #$50
   45: C036' 25 0B                                BCS           JIS_LV1
   46: C038' 34 02                                PSHS          A
   47: C03A' 86 01                                LDA           #$01
   48: C03C' B7 C807                              STA           KJ_LEVEL2
   49: C03F' 35 02                                PULS          A
   50: C041' 20 13                                BRA           DISP_CHAR
   51: C043' 7F C807            JIS_LV1:          CLR           KJ_LEVEL2
   52: C046' 20 0E                                BRA           DISP_CHAR
   53:                          
   54: C048' C1 13              BAD_2NDBYTE:      CMPB          #$13
   55: C04A' 10 27 02DC                           LBEQ          LOOP_TAIL
   56: C04E' C1 11                                CMPB          #$11
   57: C050' 10 27 02D6                           LBEQ          LOOP_TAIL
   58: C054' C6 20                                LDB           #$20
   59: C056' 7F C805            DISP_CHAR:        CLR           $C805
   60: C059' 34 10                                PSHS          X
   61: C05B' 34 06                                PSHS          A,B
   62: C05D' 8E 0730                              LDX           #$0730
   63: C060' F6 C803                              LDB           $C803
   64: C063' 3A                                   ABX
   65: C064' CB 02                                ADDB          #$02
   66: C066' F7 C803                              STB           $C803
   67: C069' C1 50                                CMPB          #$50
   68: C06B' 25 12                                BCS           DISP_WRAP
   69: C06D' 27 03                                BEQ           COL_WRAP
   70: C06F' F7 C806                              STB           $C806
   71: C072' C0 50              COL_WRAP:         SUBB          #$50
   72: C074' F7 C803                              STB           $C803
   73: C077' 17 02CA                              LBSR          NEWLINE_8ROWS
   74: C07A' 31 88 B0                             LEAY          -80,X
   75: C07D' 20 08                                BRA           DISP_CONT
   76: C07F' 1F 12              DISP_WRAP:        TFR           X,Y
   77: C081' 8E C806                              LDX           #$C806
   78: C084' 3A                                   ABX
   79: C085' E7 1F                                STB           -1,X
   80: C087' 35 06              DISP_CONT:        PULS          A,B
   81: C089' 1F 01                                TFR           D,X
   82:                          
   83: C08B' 7D C807                              TST           KJ_LEVEL2
   84: C08E' 10 26 0087                           LBNE          LEVEL2_KANJI
   85: C092' 81 28                                CMPA          #$28
   86: C094' 24 13                                BCC           KCODE_LOBYTE_ADJ3
   87: C096' C1 40                                CMPB          #$40
   88: C098' 24 03                                BCC           KCODE_LOBYTE_ADJ1
   89: C09A' 5F                                   CLRB
   90: C09B' 20 23                                BRA           KCODE_CALC
   91:                          
   92:                          ; 第一水準用コード変換(TSYS-S1Mの処理)
   93: C09D' C1 60              KCODE_LOBYTE_ADJ1:  CMPB        #$60
   94: C09F' 24 04                                BCC           KCODE_LOBYTE_ADJ2
   95: C0A1' C6 20                                LDB           #$20
   96: C0A3' 20 1B                                BRA           KCODE_CALC
   97: C0A5' C6 10              KCODE_LOBYTE_ADJ2:  LDB         #$10
   98: C0A7' 20 17                               BRA            KCODE_CALC
   99: C0A9' C4 60              KCODE_LOBYTE_ADJ3:              ANDB     #$60
  100: C0AB' CB 20                               ADDB           #$20
  101: C0AD' 81 40                               CMPA           #$40
  102: C0AF' 25 02                               BCS            KCODE_LOBYTE_ADJ4
  103: C0B1' CB 60                               ADDB           #$60
  104: C0B3' 85 08              KCODE_LOBYTE_ADJ4:  BITA        #$08
  105: C0B5' 27 09                               BEQ            KCODE_CALC
  106: C0B7' CA 10                               ORB            #$10
  107: C0B9' 20 05                               BRA            KCODE_CALC
  108:                          
  109: C0BB' 8E 4200            KCODE_FALLBACK:  LDX            #$4200
  110: C0BE' 20 1F                               BRA            KCODE_READY
  111:                          
  112:                          ; JISコード→ROM内部コード計算(第一水準専用) (TSYS-S1Mの処理)
  113: C0C0' 34 04              KCODE_CALC:      PSHS           B
  114: C0C2' 1F 10                               TFR            X,D
  115: C0C4' 58                                  ASLB
  116: C0C5' 58                                  ASLB
  117: C0C6' 58                                  ASLB
  118: C0C7' 58                                  ASLB
  119: C0C8' 49                                  ROLA
  120: C0C9' 58                                  ASLB
  121: C0CA' 49                                  ROLA
  122: C0CB' 58                                  ASLB
  123: C0CC' 49                                  ROLA
  124: C0CD' 58                                  ASLB
  125: C0CE' 49                                  ROLA
  126: C0CF' 58                                  ASLB
  127: C0D0' 49                                  ROLA
  128: C0D1' 35 04                               PULS           B
  129: C0D3' 1F 01                               TFR            D,X
  130: C0D5' BF FF75                             STX            $FF75
  131: C0D8' F6 FF76                             LDB            $FF76
  132: C0DB' C4 01                               ANDB           #$01
  133: C0DD' 26 DC                               BNE            KCODE_FALLBACK
  134: C0DF' 33 08              KCODE_READY:     LEAU           8,X
  135: C0E1' 86 08                               LDA            #$08
  136:                          
  137:                          ; ---- KANJI_ROM_READ1: 漢字ROM(第一水準,$FF75/$FF76=KANJIH)(TSYS-S1Mの処理)
  138: C0E3' BF FF75            KANJI_ROM_READ1: STX            $FF75
  139: C0E6' F6 FF75                             LDB            $FF75
  140: C0E9' F7 FE26                             STB            $FE26
  141: C0EC' FF FF75                             STU            $FF75
  142: C0EF' F6 FF75                             LDB            $FF75
  143: C0F2' F7 FE27                             STB            $FE27
  144: C0F5' E7 A4                               STB            ,Y
  145: C0F7' BF FF75                             STX            $FF75
  146: C0FA' F6 FF76                             LDB            $FF76
  147: C0FD' F7 FE26                             STB            $FE26
  148: C100' FF FF75                             STU            $FF75
  149: C103' F6 FF76                             LDB            $FF76
  150: C106' F7 FE27                             STB            $FE27
  151: C109' E7 21                               STB            1,Y
  152: C10B' 30 01                               LEAX           1,X
  153: C10D' 33 41                               LEAU           1,U
  154: C10F' 31 A9 0800                          LEAY           $0800,Y
  155: C113' 4A                                  DECA
  156: C114' 26 CD                               BNE            KANJI_ROM_READ1
  157: C116' 16 009E                             LBRA           KROM_DONE
  158:                          
  159:                          
  160:                          ;--- 第二水準漢字表示用に追加
  161: C119' 86 12              LEVEL2_KANJI:    LDA            #KANJI_SEL_LV2
  162: C11B' B7 FF74                             STA            KANJI_SEL
  163: C11E' 1F 10                               TFR            X,D
  164: C120' 17 003A                             LBSR           LEVEL2_KCODE_CALC
  165: C123' 33 08                               LEAU           8,X
  166: C125' 86 08                               LDA            #$08
  167: C127' BF FF72            LV2_LOOP:        STX            KANJI2
  168: C12A' F6 FF72                             LDB            KANJI2
  169: C12D' F7 FE26                             STB            $FE26
  170: C130' FF FF72                             STU            KANJI2
  171: C133' F6 FF72                             LDB            KANJI2
  172: C136' F7 FE27                             STB            $FE27
  173: C139' E7 A4                               STB            ,Y
  174: C13B' BF FF72                             STX            KANJI2
  175: C13E' F6 FF73                             LDB            $FF73
  176: C141' F7 FE26                             STB            $FE26
  177: C144' FF FF72                             STU            KANJI2
  178: C147' F6 FF73                             LDB            $FF73
  179: C14A' F7 FE27                             STB            $FE27
  180: C14D' E7 21                               STB            1,Y
  181: C14F' 30 01                               LEAX           1,X
  182: C151' 33 41                               LEAU           1,U
  183: C153' 31 A9 0800                          LEAY           $0800,Y
  184: C157' 4A                                  DECA
  185: C158' 26 CD                               BNE            LV2_LOOP
  186: C15A' 16 005A                             LBRA           KROM_DONE
  187:                          
  188:                          
  189:                          ; --- 第二水準文字コード変換 SasajiさんのSPKANM4.asmを参考
  190: C15D' 34 06              LEVEL2_KCODE_CALC:  PSHS        B,A
  191: C15F' 5F                                  CLRB
  192: C160' 85 08                               BITA           #$08
  193: C162' 27 02                               BEQ            LV2H_02
  194: C164' C6 19                               LDB            #$19
  195: C166' 84 70              LV2H_02:         ANDA           #$70
  196: C168' 81 30                               CMPA           #$30
  197: C16A' 25 14                               BCS            LV2H_06
  198: C16C' 27 10                               BEQ            LV2H_05
  199: C16E' 81 50                               CMPA           #$50
  200: C170' 25 0A                               BCS            LV2H_04
  201: C172' 81 60                               CMPA           #$60
  202: C174' 25 0C                               BCS            LV2H_07
  203: C176' 27 02                               BEQ            LV2H_03
  204: C178' CB 62                               ADDB           #$62
  205: C17A' C0 40              LV2H_03:         SUBB           #$40
  206: C17C' CB 60              LV2H_04:         ADDB           #$60
  207: C17E' CB 3E              LV2H_05:         ADDB           #$3E
  208: C180' CB 02              LV2H_06:         ADDB           #2
  209: C182' 86 60              LV2H_07:         LDA            #$60
  210: C184' A4 61                               ANDA           1,S
  211: C186' 81 40                               CMPA           #$40
  212: C188' 25 06                               BCS            LV2H_09
  213: C18A' 27 02                               BEQ            LV2H_08
  214: C18C' CB 22                               ADDB           #$22
  215: C18E' CB 1F              LV2H_08:         ADDB           #$1F
  216: C190' CB 01              LV2H_09:         ADDB           #1
  217: C192' C5 04                               BITB           #4
  218: C194' 27 08                               BEQ            LV2H_0A
  219: C196' C0 30                               SUBB           #$30
  220: C198' C5 08                               BITB           #8
  221: C19A' 27 02                               BEQ            LV2H_0A
  222: C19C' CB 50                               ADDB           #$50
  223: C19E' C4 F0              LV2H_0A:         ANDB           #$F0
  224: C1A0' A6 E4                               LDA            ,S
  225: C1A2' 46                                  RORA
  226: C1A3' 46                                  RORA
  227: C1A4' 46                                  RORA
  228: C1A5' 46                                  RORA
  229: C1A6' 84 E0                               ANDA           #$E0
  230: C1A8' A7 E4                               STA            ,S
  231: C1AA' A6 61                               LDA            1,S
  232: C1AC' 84 1F                               ANDA           #$1F
  233: C1AE' AA E4                               ORA            ,S
  234: C1B0' ED E4                               STD            ,S
  235: C1B2' 35 06                               PULS           A,B
  236: C1B4' 1F 01                               TFR            D,X
  237: C1B6' 39                                  RTS
  238:                          
  239: C1B7' 7D C801            KROM_DONE:       TST            $C801
  240: C1BA' 27 20                               BEQ            RET_TO_EXIT
  241: C1BC' 86 20                               LDA            #$20
  242: C1BE' 5F                                  CLRB
  243:                          
  244:                          ; --- プリンタ出力 (TSYS-S1Mの処理)
  245: C1BF' 10 3F                               SWI2
  246: C1C1' 42 1F                               FCB            $42,$1F
  247: C1C3' 2A 09                               BPL            AFTER_KANJI_READ
  248: C1C5' 86 20                               LDA            #$20
  249: C1C7' 5F                                  CLRB
  250: C1C8' 10 3F                               SWI2
  251: C1CA' 42 1F                               FCB            $42,$1F
  252: C1CC' 2B 0E                               BMI            RET_TO_EXIT
  253: C1CE' 7F C801            AFTER_KANJI_READ:  CLR          $C801
  254: C1D1' 8E 4030                             LDX            #$4030
  255: C1D4' CC 0014                             LDD            #$0014
  256: C1D7' A7 80              PRINT_SPACE_LOOP1:  STA         ,X+
  257: C1D9' 5A                                  DECB
  258: C1DA' 26 FB                               BNE            PRINT_SPACE_LOOP1
  259: C1DC' 35 10              RET_TO_EXIT:     PULS           X
  260: C1DE' 16 0149                             LBRA           LOOP_TAIL
  261:                          
  262:                          
  263:                          ; ---制御文字判定 (TSYS-S1Mの処理)
  264: C1E1' E6 80              CHAR_DISPATCH:   LDB            ,X+
  265: C1E3' C1 20                               CMPB           #$20
  266: C1E5' 10 24 007E                          LBCC           SJIS1_LOW
  267: C1E9' C1 07                               CMPB           #$07
  268: C1EB' 26 0D                               BNE            CHK_LF
  269: C1ED' 34 10                               PSHS           X
  270: C1EF' 86 07                               LDA            #$07
  271:                          
  272:                          ; --- 画面出力 (TSYS-S1Mの処理)
  273: C1F1' 10 3F                               SWI2
  274: C1F3' 41 05                               FCB            $41,$05
  275: C1F5' 35 10                               PULS           X
  276: C1F7' 16 0130                             LBRA           LOOP_TAIL
  277: C1FA' C1 0A              CHK_LF:          CMPB           #$0A
  278: C1FC' 26 2A                               BNE            CHK_CR
  279: C1FE' 17 0143                             LBSR           NEWLINE_8ROWS
  280: C201' 7D C801                             TST            $C801
  281: C204' 10 27 0122                          LBEQ           LOOP_TAIL
  282: C208' 86 0A                               LDA            #$0A
  283: C20A' 5F                                  CLRB
  284: C20B' 34 10                               PSHS           X
  285: C20D' 10 3F                               SWI2
  286: C20F' 42 1F                               FCB            $42,$1F
  287: C211' 35 10                               PULS           X
  288: C213' 10 2B 0113                          LBMI           LOOP_TAIL
  289: C217' 7F C801                             CLR            $C801
  290: C21A' CE 4030                             LDU            #$4030
  291: C21D' CC 0014                             LDD            #$0014
  292: C220' A7 C0              LF_PRINT_LOOP:   STA            ,U+
  293: C222' 5A                                  DECB
  294: C223' 26 FB                               BNE            LF_PRINT_LOOP
  295: C225' 16 0102                             LBRA           LOOP_TAIL
  296: C228' C1 0D              CHK_CR:          CMPB           #$0D
  297: C22A' 26 06                               BNE            CHK_BS
  298: C22C' 7F C803                             CLR            $C803
  299: C22F' 16 00F8                             LBRA           LOOP_TAIL
  300: C232' C1 08              CHK_BS:          CMPB           #$08
  301: C234' 10 26 00F2                          LBNE           LOOP_TAIL
  302: C238' CE C806                             LDU            #$C806
  303: C23B' B6 C803                             LDA            $C803
  304: C23E' 4A                                  DECA
  305: C23F' 6D C6                               TST            A,U
  306: C241' 27 01                               BEQ            BS_COL_CLAMP
  307: C243' 4A                                  DECA
  308: C244' 4D                 BS_COL_CLAMP:    TSTA
  309: C245' 2A 01                               BPL            BS_COL_STORE
  310: C247' 4F                                  CLRA
  311: C248' B7 C803            BS_COL_STORE:    STA            $C803
  312: C24B' CE 0730                             LDU            #$0730
  313: C24E' 33 C6                               LEAU           A,U
  314: C250' 4F                                  CLRA
  315: C251' B7 FE26                             STA            $FE26
  316: C254' B7 FE27                             STA            $FE27
  317: C257' 86 08                               LDA            #$08
  318: C259' A7 C4              BS_CLEAR_LOOP:   STA            ,U
  319: C25B' A7 41                               STA            1,U
  320: C25D' 33 C9 0800                          LEAU           $0800,U
  321: C261' 4A                                  DECA
  322: C262' 26 F5                               BNE            BS_CLEAR_LOOP
  323: C264' 16 00C3                             LBRA           LOOP_TAIL
  324:                          
  325:                          ; ---SJIS1バイト目 $81-$9F の判定/変換(TSYS-S1Mの処理)
  326: C267' C1 81              SJIS1_LOW:       CMPB           #$81
  327: C269' 25 1C                               BCS            HALF_CHAR
  328: C26B' C1 A0                               CMPB           #$A0
  329: C26D' 24 08                               BCC            SJIS1_HIGH
  330: C26F' C0 70                               SUBB           #$70
  331: C271' F7 C805                             STB            $C805
  332: C274' 16 00B3                             LBRA           LOOP_TAIL
  333:                          
  334:                          ; --- SJIS1バイト目 $E0-$FC の判定/変換(TSYS-S1Mの処理)
  335: C277' C1 E0              SJIS1_HIGH:      CMPB           #$E0
  336: C279' 25 0C                               BCS            HALF_CHAR
  337: C27B' C1 FD                               CMPB           #$FD
  338: C27D' 24 08                               BCC            HALF_CHAR
  339: C27F' C0 B0                               SUBB           #$B0
  340: C281' F7 C805                             STB            $C805
  341: C284' 16 00A3                             LBRA           LOOP_TAIL
  342: C287' CE 0730            HALF_CHAR:       LDU            #$0730
  343: C28A' B6 C803                             LDA            $C803
  344: C28D' 33 C6                               LEAU           A,U
  345: C28F' 7D C800                             TST            $C800
  346: C292' 27 37                               BEQ            ROW_ADDR_CALC2
  347: C294' C1 A6                               CMPB           #$A6
  348: C296' 25 33                               BCS            ROW_ADDR_CALC2
  349: C298' C1 DE                               CMPB           #$DE
  350: C29A' 24 2F                               BCC            ROW_ADDR_CALC2
  351: C29C' C1 B0                               CMPB           #$B0
  352: C29E' 27 2B                               BEQ            ROW_ADDR_CALC2
  353: C2A0' C1 C0                               CMPB           #$C0
  354: C2A2' 24 04                               BCC            HALF_CHAR_ADJ
  355: C2A4' C0 20                               SUBB           #$20
  356: C2A6' 20 02                               BRA            ROW_ADDR_CALC
  357: C2A8' CB 20              HALF_CHAR_ADJ:   ADDB           #$20
  358:                          
  359:                          ; ---- ROW_ADDR_CALC: 表示行アドレス計算: row*16+$5000 (TSYS-S1Mの処理)
  360: C2AA' 34 04              ROW_ADDR_CALC:   PSHS           B
  361: C2AC' 86 10                               LDA            #$10
  362: C2AE' 3D                                  MUL
  363: C2AF' C3 5000                             ADDD           #$5000
  364: C2B2' 1F 02                               TFR            D,Y
  365: C2B4' 86 08                               LDA            #$08
  366: C2B6' E6 28              ROW_STORE_LOOP:  LDB            8,Y
  367: C2B8' F7 FE27                             STB            $FE27
  368: C2BB' E6 A0                               LDB            ,Y+
  369: C2BD' F7 FE26                             STB            $FE26
  370: C2C0' E7 C4                               STB            ,U
  371: C2C2' 33 C9 0800                          LEAU           $0800,U
  372: C2C6' 4A                                  DECA
  373: C2C7' 26 ED                               BNE            ROW_STORE_LOOP
  374: C2C9' 20 2C                               BRA            AFTER_ROW_STORE
  375:                          
  376:                          ; ---- ROW_ADDR_CALC2: 表示行アドレス計算: 疑似400ライン用!? (TSYS-S1Mの処理)
  377: C2CB' 34 04              ROW_ADDR_CALC2:  PSHS           B
  378: C2CD' 86 10                               LDA            #$10
  379: C2CF' 3D                                  MUL
  380: C2D0' 81 08                               CMPA           #$08
  381: C2D2' 25 03                               BCS            ROW_ADDR_ADJ_DONE
  382: C2D4' 80 08                               SUBA           #$08
  383: C2D6' 5C                                  INCB
  384: C2D7' C3 5000            ROW_ADDR_ADJ_DONE:  ADDD        #$5000
  385: C2DA' 1F 02                               TFR            D,Y
  386: C2DC' 86 04                               LDA            #$04
  387: C2DE' E6 28              ROW_STORE_LOOP2: LDB            8,Y
  388: C2E0' F7 FE27                             STB            $FE27
  389: C2E3' E6 A1                               LDB            ,Y++
  390: C2E5' F7 FE26                             STB            $FE26
  391: C2E8' E7 C4                               STB            ,U
  392: C2EA' 33 C9 0800                          LEAU           $0800,U
  393: C2EE' E7 C4                               STB            ,U
  394: C2F0' 33 C9 0800                          LEAU           $0800,U
  395: C2F4' 4A                                  DECA
  396: C2F5' 26 E7                               BNE            ROW_STORE_LOOP2
  397: C2F7' 35 02              AFTER_ROW_STORE: PULS           A
  398: C2F9' 7D C801                             TST            $C801
  399: C2FC' 27 19                               BEQ            COL_ADVANCE
  400: C2FE' 5F                                  CLRB
  401: C2FF' 34 10                               PSHS           X
  402:                          
  403: C301' 10 3F                               SWI2
  404: C303' 42 1F                               FCB            $42,$1F
  405: C305' 35 10                               PULS           X
  406: C307' 2B 0E                               BMI            COL_ADVANCE
  407: C309' 7F C801                             CLR            $C801
  408: C30C' CE 4030                             LDU            #$4030
  409: C30F' CC 0014                             LDD            #$0014
  410: C312' A7 C0              PRINT_SPACE_LOOP2:  STA         ,U+
  411: C314' 5A                                  DECB
  412: C315' 26 FB                               BNE            PRINT_SPACE_LOOP2
  413: C317' CE C806            COL_ADVANCE:     LDU            #$C806
  414: C31A' B6 C803                             LDA            $C803
  415: C31D' 6F C6                               CLR            A,U
  416: C31F' 4C                                  INCA
  417: C320' 81 50                               CMPA           #$50
  418: C322' 26 03                               BNE            COL_STORE
  419: C324' 8D 1E                               BSR            NEWLINE_8ROWS
  420: C326' 4F                                  CLRA
  421: C327' B7 C803            COL_STORE:       STA            $C803
  422:                          
  423:                          ; ----共通出口(TSYS-S1Mの処理)
  424: C32A' F6 C802            LOOP_TAIL:       LDB            $C802
  425: C32D' CE 4730                             LDU            #$4730
  426: C330' 6F C5                               CLR            B,U
  427: C332' 86 FE                               LDA            #$FE
  428: C334' F6 C803                             LDB            $C803
  429: C337' A7 C5                               STA            B,U
  430: C339' F7 C802                             STB            $C802
  431: C33C' 7A C804                             DEC            $C804
  432: C33F' 10 26 FCC4                          LBNE           CHAR_LOOP
  433: C343' 39                                  RTS
  434:                          
  435:                          ; ---- 改行時の処理!?(TSYS-S1Mの処理)
  436: C344' CE 0050            NEWLINE_8ROWS:   LDU            #$0050
  437: C347' 8D 24                               BSR            NEWLINE_ROW_FILL
  438: C349' CE 0850                             LDU            #$0850
  439: C34C' 8D 1F                               BSR            NEWLINE_ROW_FILL
  440: C34E' CE 1050                             LDU            #$1050
  441: C351' 8D 1A                               BSR            NEWLINE_ROW_FILL
  442: C353' CE 1850                             LDU            #$1850
  443: C356' 8D 15                               BSR            NEWLINE_ROW_FILL
  444: C358' CE 2050                             LDU            #$2050
  445: C35B' 8D 10                               BSR            NEWLINE_ROW_FILL
  446: C35D' CE 2850                             LDU            #$2850
  447: C360' 8D 0B                               BSR            NEWLINE_ROW_FILL
  448: C362' CE 3050                             LDU            #$3050
  449: C365' 8D 06                               BSR            NEWLINE_ROW_FILL
  450: C367' CE 3850                             LDU            #$3850
  451: C36A' 8D 01                               BSR            NEWLINE_ROW_FILL
  452: C36C' 39                                  RTS
  453: C36D' CC 0730            NEWLINE_ROW_FILL:  LDD          #$0730
  454: C370' E5 C8 50           NEWLINE_ROW_LOOP:  BITB         80,U
  455: C373' E7 C0                               STB            ,U+
  456: C375' 83 0001                             SUBD           #$0001
  457: C378' 26 F6                               BNE            NEWLINE_ROW_LOOP
  458: C37A' 39                                  RTS
  459:                          
  460: C400'                                     ORG            $C400
  461:                          
  462:                          ; --- EXEC&HC400 エントリ (TSYS-S1Mの処理)
  463: C400' 8E 4050            EXEC_ENTRY:      LDX            #$4050
  464: C403' CC 06E0                             LDD            #$06E0
  465: C406' 6F 80              EXEC_CLEAR_LOOP: CLR            ,X+
  466: C408' 83 0001                             SUBD           #$0001
  467: C40B' 26 F9                               BNE            EXEC_CLEAR_LOOP
  468: C40D' 39                                  RTS

0 errors.

HEXコードはこちらです。
S1エミュなどでメモリにロードしてお使い下さい

:20C00000E680F7C804AE84B6C805102701D3E68010270316C1402530C1FD242CC17F27288E
:20C02000C1802505C19F24015A484AC19F2503C05F4CC01F8150250B34028601B7C856358A
:20C040000220137FC856200EC113102702DCC111102702D6C6207FC805341034068E0730A1
:20C06000F6C8033ACB02F7C803C15025122703F7C806C050F7C8031702CA3188B020081F9A
:20C08000128EC8063AE71F35061F017DC8561026008781282413C14024035F2023C1602450
:20C0A00004C620201BC6102017C460CB2081402502CB6085082709CA1020058E4200201F61
:20C0C00034041F105858585849584958495849584935041F01BFFF75F6FF76C40126DC33DB
:20C0E000088608BFFF75F6FF75F7FE26FFFF75F6FF75F7FE27E7A4BFFF75F6FF76F7FE26B5
:20C10000FFFF75F6FF76F7FE27E7213001334131A908004A26CD16009E8612B7FF741F10B4
:20C1200017003A33088608BFFF72F6FF72F7FE26FFFF72F6FF72F7FE27E7A4BFFF72F6FF90
:20C1400073F7FE26FFFF72F6FF73F7FE27E7213001334131A908004A26CD16005A34065F88
:20C1600085082702C61984708130251427108150250A8160250C2702CB62C040CB60CB3E79
:20C18000CB028660A461814025062702CB22CB1FCB01C5042708C030C5082702CB50C4F082
:20C1A000A6E44646464684E0A7E4A661841FAAE4EDE435061F01397DC801272086205F10AF
:20C1C0003F421F2A0986205F103F421F2B0E7FC8018E4030CC0014A7805A26FB351016017A
:20C1E00049E680C1201024007EC107260D34108607103F41053510160130C10A262A1701DD
:20C20000437DC80110270122860A5F3410103F421F3510102B01137FC801CE4030CC00145E
:20C22000A7C05A26FB160102C10D26067FC8031600F8C108102600F2CEC806B6C8034A6DEC
:20C24000C627014A4D2A014FB7C803CE073033C64FB7FE26B7FE278608A7C4A74133C90874
:20C26000004A26F51600C3C181251CC1A02408C070F7C8051600B3C1E0250CC1FD2408C037
:20C28000B0F7C8051600A3CE0730B6C80333C67DC8002737C1A62533C1DE242FC1B0272BDB
:20C2A000C1C02404C0202002CB20340486103DC350001F028608E628F7FE27E6A0F7FE2650
:20C2C000E7C433C908004A26ED202C340486103D8108250380085CC350001F028604E6289A
:20C2E000F7FE27E6A1F7FE26E7C433C90800E7C433C908004A26E735027DC80127195F347B
:20C3000010103F421F35102B0E7FC801CE4030CC0014A7C05A26FBCEC806B6C8036FC64CF9
:20C32000815026038D1E4FB7C803F6C802CE47306FC586FEF6C803A7C5F7C8027AC8041086
:20C3400026FCC439CE00508D24CE08508D1FCE10508D1ACE18508D15CE20508D10CE28504F
:1BC360008D0BCE30508D06CE38508D0139CC0730E5C850E7C083000126F639AC
:0EC400008E4050CC06E06F8083000126F93993
:00000001FF

そんなTSYS-S1漢字ターミナル改造の記録・・・

kabekin