S-OS EMULATOR for Kanrinin/3 X1 version 1.03 [2001/01/03] programmed by FUKAYA Takashi ■ このプログラムについて  S-OS"SWORD"用プログラムの実行環境(エミュレータ、あるいはS-OSクローン)です。  X1用 S-OS"SWORD"(オリジナル)は、バイナリにシャープ株式会社の著作物である HuBASICの一部(IOCS)を含んでいるため、配布は制限されるかもしれません。  そのためX1用ゲームOSとして開発した Kanrinin/3 上で、S-OSのシステムコール層を 提供するプログラム(本エミュレータ本体)をロードし、そのうえで S-OS用プログラムを 実行出来るようにしました。  エミュレータは、S-OSのシステムコールを処理し1文字表示/キー入力などの低レベル I/O処理に分解しKanrinin/3を呼び出しています。  現状では一部のS-OOSシステムコールのみの実装となっており、またS-OSコマンドライ ンも実装されていないため、あらかじめ登録したプログラムのみ起動できる評価版となっ ています。  対応機種:X1/turbo/Z または上記マシンのエミュレータ (X Milleniumでの動作を確認しました) ■ S-OSとは (LINK)  詳しい情報は、S-OS ユーザーズクラブ 大石様の管理している以下のサイトが 参考になります。  THE SENTINEL  http://kobe.cool.ne.jp/sos/ ■ 起動方法  ディスクをドライブ0にセットしX1を起動起動して下さい。  Kanrinin/3 の起動画面が表示された後エミュレータが起動します。 【画面】 S-OS EMULATOR for KANRININ/3 version 1.01 2000/12/31-2000/1/1,2 programmed by FUKAYA Takashi SELECT EXEC PROGRAM 1) CAMEL DE TRY for S-OS (by F/T) 2) METAL FIGHT for S-OS & MAGIC (by MERA) 3) filer "At ESE" for S-OS (by F/T) [YET] PRESS [1] OR [2] KEY :#  起動後、実行プログラムを選択するメニューが表示されますので、1〜3のキーで選択 してください。 ■ サンプルプログラム 1.CAMEL DE TRY for S-OS (by F/T)  某回転ゲームみたいなものを作ってみました。  迷路を回転させて落下し続けるボールをゴールまで導いて下さい。  全5面  操作: (タイトル) [↑]/[↓] レベル選択 [RETURN] スタート (ゲーム中) [4] 左回転 [6] 右回転 [ESC] 中断 2.METAL FIGHT for S-OS & MAGIC (by MERA)  MAGICを使用したロボットシューティングゲームです。ボス戦が熱い!  操作: [4][6] 左右移動 [8] ジャンプ [SPACE] レーザー発射 [5] ガード  詳しくは作者の黒木さんのページを参照 BASIC BATTLE FIELD http://www.0-web.com/member/kuroki/ 3.filer "At ESE" for S-OS (by F/T)  S-OS用ファイル管理ツール(FDみたいなもの)。  エミュレータ上ではまだ正常に動作しません。 ■ その他  Kanrinin/3は PC88用も存在しますので PC88版の開発も予定しています。 ■ 履歴 (BASIC BATTLE FILED http://www.0-web.com/member/kuroki/ から転載) ・2001.01.03  METAL FIGHT動くようになりました(というかなんというか)。  どうやら2036H〜2FFFHのS-OS仕様外のアドレスが呼ばれていたようです。 (S-OSエミュが悪さしているのかもしれない)  それでそのエリアにS-OS(本物)のイメージがあると正常にうごいたようです。   とりあえず該当エリアに、C9h(RETコード)を敷き詰めることでごまかしてます。  あと文字コード変換をつけたので、■などのキャラが化けなくなりました。  #FLGETでカーソルを点滅できるようになりました。  画面モードはあいかわらず80文字モードOnlyです。  それにしてもOHM-Z80が使えないのは痛い。昔作ったプログラムの再コンパイルができ ない。今使っているX1 Milleniumは非常にできのいいエミュレータなんですがこの部分 だけこまってる。やっぱり隠し命令使うのは禁じ手だったのか。 (あのころはエミュレータでX1が動くなんて夢にも思ってなかった) ・2001.01.02  METAL FIGHTが動かないというバグがありました。 ・2001.01.01  昨晩からS-OSエミュfor Kanrinin/3 X1を作ってました。  今年のプログラム初めは、X1エミュレータ上のS-OSでZ80のプログラムを作るというま さに21世紀の幕開けにふさわしいものでした。  とりあえず、HuBASICなどのコードを含まないS-OSの実行環境ができました。  まだ、コマンドラインがないので、動かせるのはあらかじめ登録されたプログラムだ けです。   サンプルとして、CAMEL DE TRY(某回転ゲームもどき)とMETAL FIGHT を起動できるよ うにしてあります。  現状は、S-OSのエントリの半分くらいしか実装していない(特にファイル関連)のと 80文字モード専用なのでこの辺を改良予定。あとS-OSの文字コードはX1のとは違うので 変換しないといけないですね。(■や□の文字コードが違うのでゲーム画面でこまる)  それにしてもX1エミュが IX,IYレジスタを8ビットレジスタとして使う命令 (Z80裏技)に対応してなかったので、OHM-Z80が使えなくて難儀しました。  結局REDAでアセンブルしました。(エディタもREDA) ■ ディスク内容 "-------------.---" --- 00000000Byte TOP:0000 EXEC:0000 "S-OS EMU FOR .K3 " --- 00000000Byte TOP:0000 EXEC:0000 " DEVELOPMENT .DSK" --- 00000000Byte TOP:0000 EXEC:0000 "by FUKAYA Tak.asi" --- 00000000Byte TOP:0000 EXEC:0000 " Date:2000-12.28 " --- 00000000Byte TOP:0000 EXEC:0000 "-------------.---" --- 00000000Byte TOP:0000 EXEC:0000 "REDA . " Obj 00008192Byte TOP:3000 EXEC:3000 アセンブラ "ATESE .R " Obj 00010044Byte TOP:3000 EXEC:55c3 ファイル管理ツール(開発用) "ATESE .ASM" Asc 00035596Byte TOP:0000 EXEC:0000 ARESE.R ソース "SWORD .H " Asc 00002170Byte TOP:0000 EXEC:0000 S-OS エントリーヘッダ(ASM用) "-------------.---" Asc 00065535Byte TOP:ffff EXEC:ffff "KANRININ_3 .MAC" Asc 00030718Byte TOP:0000 EXEC:0000 Kanrinin/3 ソース "K3 . " Obj 00004096Byte TOP:c000 EXEC:cff0 Kanrinin/3 本体 "EXPANSION .MAC" Asc 00001324Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_PCG SET .MAC" Asc 00002122Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_SCROLL .MAC" Asc 00003246Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_FPUT .MAC" Asc 00010020Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_COPY .MAC" Asc 00002950Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_GRAPH .MAC" Asc 00006934Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXS_TENKAI .MAC" Asc 00005241Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部ソース "EXPANSION .COM" Obj 00004096Byte TOP:c000 EXEC:1000 Kanrinin/3 拡張部 "EX_TABLE .OBJ" Obj 00000768Byte TOP:f400 EXEC:f400 Kanrinin/3 拡張部用テーブル "BIOS_ENTRY .ASM" Asc 00003682Byte TOP:0000 EXEC:0000 Kanrinin/3 エントリヘッダ(ASM用) "BIOS_ENTRY2 .ASM" Asc 00001992Byte TOP:0000 EXEC:0000 Kanrinin/3 拡張部エントリヘッダ(ASM用) "README .DOC" Asc 00012288Byte TOP:0000 EXEC:0000 Kanrinin/3 開発マニュアル 入門編 "-FOR EXAMPLE-.---" Asc 00065535Byte TOP:ffff EXEC:ffff "TC_MOJI .MAC" Asc 00005158Byte TOP:0000 EXEC:0000 Kanrinin/3 アプリサンプル "TC_KEY .MAC" Asc 00005076Byte TOP:0000 EXEC:0000 Kanrinin/3 アプリサンプル "TC_GRAPH .MAC" Asc 00008051Byte TOP:0000 EXEC:0000 Kanrinin/3 アプリサンプル "-S-OS EMU----.---" Asc 00065535Byte TOP:ffff EXEC:ffff "COMMAND .MAC" Asc 00004736Byte TOP:0000 EXEC:0000 Kanrinin/3 シェル(S-OS EMU 起動専用) ソース "COMMAND .COM" Obj 00000122Byte TOP:3000 EXEC:3000 Kanrinin/3 シェル(S-OS EMU 起動専用) "SOSEMU .MAC" Asc 00014100Byte TOP:0000 EXEC:0000 S-OS EMU ソース "SOSEMU .Sys" Obj 00008177Byte TOP:1000 EXEC:1000 S-OS EMU 本体 "-SAMPLE EXE--.---" Asc 00065535Byte TOP:ffff EXEC:ffff "CAMEL . " Obj 00008192Byte TOP:c000 EXEC:c003 サンプルプログラム(S-OS用) Camel DE Try "META . " Obj 00037357Byte TOP:3000 EXEC:3000 サンプルプログラム(S-OS用) Metal Fight "ATESE . " Obj 00012288Byte TOP:8000 EXEC:8000 サンプルプログラム(S-OS用) ATESE (これはまだエミュレータでは動きません) ■ エントリー実装状況  実装されているエントリーは以下の通りです。 「○」 実装済み 「△」 機能限定 「 」 未実装 ; ********** S-OS ENTRY ORG 01F5BH ; WORK AREA #MAXLIN: DB 25 ; 01F5BH ○ #WIDTH: DB 80 ; 01F5CH ○ #DSK: DB "A" ; 01F5DH #FATPOS: DW 0000EH ; 01F5EH ○ #DIRPS: DW 00010H ; 01F60H ○ #FATBF: DW 0F200H ; 01F62H ○ #DTBUF: DW 0E000H ; 01F64H ○ #MXTRK: DB 80 ; 01F66H ○ #DIRNO: DB 0 ; 01F67H #WKSIZ: DW 0C000H ; 01F68H ○ #MEMAX: DW 0E000H ; 01F6AH ○ #STKAD: DW #NODEF ; 01F6CH #EXADR: DW 00000H ; 01F6EH #DTADR: DW 00000H ; 01F70H #SIZE: DW 00000H ; 01F72H #IBFAD: DW #NODEF ; 01F74H #KBFAD: DW 0F0C0H ; 01F76H #XYADR: DW #CURX ; 01F78H ○ #PRCNT: DW #CURX ; 01F7AH ○ #LPSW: DB 1 ; 01F7CH #DVSW: DB 1 ; 01F7DH #USR: DW 01000H ; 01F7EH ORG 01F80H ; S-OS ENTRY #GETPC: DB 0E1H ; 01F80H ○ [HL]: DB 0E9H,00H,00H; 01F81H ○ ORG 01F8EH #MON: JP #NOWORK ; 01F8EH #PEEK@: JP #NOWORK ; 01F91H #PEEK: JP @PEEK ; 01F94H ○ #POKE@: JP #NOWORK ; 01F97H #POKE: JP @POKE ; 01F9AH ○ #FPRNT: JP #NOWORK ; 01F9DH #FSAME: JP #NOWORK ; 01FA0H #FILE: JP #NOWORK ; 01FA3H #RDD: JP #NOWORK ; 01FA6H #FCB: JP #NOWORK ; 01FA9H #WRD: JP #NOWORK ; 01FACH #WOPEN: JP #NOWORK ; 01FAFH #HLHEX: JP @HLHEX ; 01FB2H ○ #2HEX: JP @2HEX ; 01FB5H ○ #HEX: JP @HEX ; 01FB8H ○ #ASC: JP @ASC ; 01FBBH ○ #PRTHL: JP @PRTHL ; 01FBEH ○ #PRTHX: JP @PRTHX ; 01FC1H ○ #BELL: JP @BELL ; 01FC4H ○ #PAUSE: JP #NOWORK ; 01FC7H #INKEY: JP @INKEY ; 01FCAH ○ #BRKEY: JP @BRKEY ; 01FCDH ○ #GETKY: JP @GETKY ; 01FD0H ○ #GETL: JP #NOWORK ; 01FD3H #LPTOF: JP #NOWORK ; 01FD6H #LPTON: JP #NOWORK ; 01FD9H #LPRNT: JP #NOWORK ; 01FDCH #TAB: JP #NOWORK ; 01FDFH #MPRNT: JP @MPRNT ; 01FE2H ○ #MSX: JP @MSX ; 01FE5H ○ #MSG JP @MSG ; 01FE8H ○ #NL: JP @NL ; 01FEBH ○ #LTNL: JP @LTNL ; 01FEEH ○ #PRINTS: JP @PRINTS ; 01FF1H ○ #PRINT: JP @PRINT ; 01FF4H ○ #VER: JP @VER ; 01FF7H ○ #HOT: JP #NOWORK ; 01FFAH #COLD: JP #NOWORK ; 01FFDH #DRDSB: JP @DRDSB ; 02000H ○ #DWTSB: JP #NOWORK ; 02003H #DIR: JP #NOWORK ; 02006H #ROPEN: JP #NOWORK ; 02009H #SET: JP #NOWORK ; 0200CH #RESET: JP #NOWORK ; 0200FH #NAME: JP #NOWORK ; 02012H #KILL: JP #NOWORK ; 02015H #CSR: JP @CSR ; 02018H ○ #SCRN: JP @SCRN ; 0201BH ○ #LOC: JP @LOC ; 0201EH ○ #FLGET; JP @FLGET ; 02021H ○ #RDVXSW: JP @RDVXSW ; 02024H △ #SDVSW: JP @SDVSW ; 02027H △ #INP: JP #NOWORK ; 0202AH #OUT: JP #NOWORK ; 0202DH #WIDCH: JP @WIDCH ; 02030H #ERROR: JP #NOWORK ; 02033H #SOSCMD: JP @SOSCMD ; 0211BH ■ 連絡先 深谷 崇(F/T) E-Mail: fukaya@dokokano.com URL: http://www.dokokano.com/