LoginSignup
3
1

More than 1 year has passed since last update.

PC-8001でもXMODEM

Last updated at Posted at 2021-07-24

HardOffで110円で手に入れたUP12でPC-8001とWindows 7がつながったのに気をよくて、XMODEMのシーケンスを試してみました。

XMODEMはコンピュータ間でシリアル通信を使いファイルの送受信をおこなうプロトコルで、1977年にWard Christensenにより8BitのCP/M上で開発されたようです。日本ではパソコン通信とともに80年代に入ってから普及しました。XMODEMが元祖で、いろいろな派生系が存在します。

Windows 7でターミナルはRLoginを使っているのですがRLoginにもXMODEMのサポートがありました。

Z80のアセンブラで受信のプログラムを書いてみました。シーケンスの確認で中身は無いです。

UARTRD  EQU 20H
UARTRC  EQU 21H

RTSHIG  EQU 00010111B
RTSLOW  EQU 00110111B

SOH     EQU     01H
STX     EQU     02H
EOT     EQU     04H
ACK     EQU     06H
NAK     EQU     15H
CAN     EQU     18H

PUT MACRO   C
    LD  A, C
    RST 18H
    ENDM

    ORG 6000H

START:

    CALL    INIT8251
L2:
    LD  A, NAK
    CALL    CHAR_OUT
    CALL    CHAR_IN
    CP  EOT
    JP  Z, L1
    LD  C, 131

L3:
    CALL    CHAR_IN
    DEC C
    JP  NZ, L3

    LD  A, ACK
    CALL    CHAR_OUT

    PUT '.'
    JP  L2

L1:
    LD  A, ACK
    CALL    CHAR_OUT

    JP  05C66H

INIT8251:
    XOR A
    OUT (UARTRC), A
    OUT (UARTRC), A
    OUT (UARTRC), A
    LD  A, 01000000B
    OUT (UARTRC), A
    LD  A, 01001110B
    OUT (UARTRC), A
    LD  A, RTSLOW
    OUT (UARTRC), A

;
;  PC-8001の8251を外部RS232Cヘ
;
    LD  A, (0EA66h)  ; ワークエリアから I/O 30hへ出力する情報を取得
    AND A, 0CFh
    OR  A, 20h      ; BS2 = ON
    OUT (30h), A    ; CMTから外部RS232Cへ切り替え
;
    RET

;
; 8251から1文字入力
;
CHAR_IN:
    IN  A, (UARTRC)
    AND A, 02h
    JP  Z, CHAR_IN
    IN  A, (UARTRD)
    RET
;
; 8251へ1文字出力
;
CHAR_OUT:
    PUSH    AF
CHAR_OUT1:
    IN  A, (UARTRC)
    AND A, 01h
    JP  Z, CHAR_OUT1
    POP AF
    OUT (UARTRD), A
    RET

8Bit時代に作られたプロトコルなので、8Bitのアセンブラにしっくりきますね。

RLoginをcom 300 ビット/秒で接続してXMODEMアップロード状態にして、このプログラムを実行すると処理が行われ、終了します。

RLogin.png

こちらのページを参考にしました。

ちなみに内蔵の8251はカセットインターフェースとの兼用で、割り込みを使っていません。拡張ユニット(PC-8011)の方の8251は割り込みを使っているようです。そのためか、外付けの8251の方はBASICでサポートがありますが、内蔵のほうはありません。

ボーレートはデフォルト300ですが、筐体の中のジャンパーで、4800まで変更可能です。

3
1
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
3
1