SBC6800に6502を載せてApple II BASIC Subset を走らせる
★ SBC6800の製作記事を参照する必要があります ★
★ このBlogの元になった記事はこちらの海外サイト★
この記事の説明によると、
「Applesoft LiteはAppleIIのApplesoft BASICをReplica-1用に改定したものである。.....グラフィック関連などを取り除くとともにReplica-1用にコマンドを少し加えた」
とあります。関係した方々に深く敬意を表します。
applesoft-liteROMv1.zip (*.ASM, *.HEX, *.bin, *.LST)
1. SBC6800に6502を搭載するための改修
・ メモリ構成
2. 当Blogの環境と条件
- PC:
- win10に次のコマンドをインストール:
msdos.exe MS-DOS Player
X6502.exe Arcpitのクロス・アセンブラ
Tera Term ターミナル エミュレータ
Xgpro v10.13 Universal Programmer TL866 II PLUSの書き込みソフト
・ダウンロードしたXgproV1013_Setupでインストール場所をC:¥Program Filesに設定するとXgpro起動時に「Config file error!」が出る。従って当BlogではC¥user¥commandとした。このバージョンはPIC12F1822に書き込み可能で、汎用ロジックICのテストができる。
3. Applesoft-lite BASICソースの手入れ
- console入出力の部分はCONIN、CONOUTに書き換え、NOPを挿入して他は海外サイトのApplesoft-lite オリジナルROMと同じ配置にしてある。
- Arcpitコンパイラは16bit の上位8ビットを取得するには{
なので、>、<を書き換える。
>MSDOS X6501 /H applesoft-liteROMv1.ASM, applesoft-liteROMv1.HEX, applesoft-liteROMv1.LST
- Universal Programmer TL866 IIでHEXファイルをPROM( AT28C256 )に焼く。
5. 起動テスト
- 起動時のPromptはオリジナルはバックスラッシュ( \)だが、¥
- E000R 改行でBASICが起動する。プロンプトは ]
- CALL -256 改行でWozMonitorに戻り、E003R 改行でBASIC がwarm startする。
ASCII ART:2MHzクロックで4分2秒
2 PRINT "LOVE"4 PRINT "CREATIVE COMPUTING MORRISTOWN, NEW JERSEY"6 PRINT: PRINT: PRINT20 PRINT "A TRIBUTE TO THE GREAT AMERICAN ARTIST, ROBERT INDIANA."30 PRINT "HIS GREATEST WORK WILL BE REPRODUCED WITH A MESSAGE OF"40 PRINT "YOUR CHOICE UP TO 60 CHARACTERS. IF YOU CAN'T THINK OF"50 PRINT "A MESSAGE, SIMPLE TYPE THE WORD 'LOVE'": PRINT60 INPUT "YOUR MESSAGE, PLEASE";A$: L=LEN(A$)70 DIM T$(120): FOR I=1 TO 10: PRINT: NEXT I100 FOR J=0 TO INT(60/L)110 FOR I=1 TO L120 T$(J*L+I)=MID$(A$,I,1)130 NEXT I: NEXT J140 C=0200 A1=1: P=1: C=C+1: IF C=37 THEN 999205 PRINT210 READ A: A1=A1+A: IF P=1 THEN 300240 FOR I=1 TO A: PRINT " ";: NEXT I: P=1: GOTO 400300 FOR I=A1-A TO A1-1: PRINT T$(I);: NEXT I: P=0400 IF A1>60 THEN 200410 GOTO 210600 DATA 60,1,12,26,9,12,3,8,24,17,8,4,6,23,21,6,4,6,22,12,5,6,5610 DATA 4,6,21,11,8,6,4,4,6,21,10,10,5,4,4,6,21,9,11,5,4620 DATA 4,6,21,8,11,6,4,4,6,21,7,11,7,4,4,6,21,6,11,8,4630 DATA 4,6,19,1,1,5,11,9,4,4,6,19,1,1,5,10,10,4,4,6,18,2,1,6,8,11,4640 DATA 4,6,17,3,1,7,5,13,4,4,6,15,5,2,23,5,1,29,5,17,8650 DATA 1,29,9,9,12,1,13,5,40,1,1,13,5,40,1,4,6,13,3,10,6,12,5,1660 DATA 5,6,11,3,11,6,14,3,1,5,6,11,3,11,6,15,2,1670 DATA 6,6,9,3,12,6,16,1,1,6,6,9,3,12,6,7,1,10680 DATA 7,6,7,3,13,6,6,2,10,7,6,7,3,13,14,10,8,6,5,3,14,6,6,2,10690 DATA 8,6,5,3,14,6,7,1,10,9,6,3,3,15,6,16,1,1700 DATA 9,6,3,3,15,6,15,2,1,10,6,1,3,16,6,14,3,1,10,10,16,6,12,5,1710 DATA 11,8,13,27,1,11,8,13,27,1,60999 FOR I=1 TO 10: PRINT: NEXT I: END
コメント
コメントを投稿