8年くらい前に作った8080シミュレータで動くPalo Alto Tiny BASICのオブジェクトコード。

前回のエントリ。ソース、ビルド済みExe一式。
https://mzex.wordpress.com/2018/05/26/12977/

次のエントリ。役に立たない学術的なTinyBASICサンプルコード。
https://mzex.wordpress.com/2018/05/26/12986/

前回のMIMEデコードした圧縮ファイルにも含めているが、TinyBASICは本物の8080用のコードを使う。

BASIC Programming Resources and Chipmunk Basic Archive
http://www.nicholson.com/rhn/basic/basic.info.html

ここからもらってきた「Palo Alto Tiny BASIC Interpreter Version 3.0」の最後の部分にある1文字出力、1文字入力、入力チェックルーチンはシミュレータに合わせて変更する。基本的にはCP/M-80の低水準入出力と同じ仕様にしてある。アセンブルはCP/M用のDigital Research Macro Assembler (MAC) を適当なCP/Mシミュレータで動かしてPATBSIM.HEXファイルを作成する。MACが使えない場合はHEXファイルをパッチするのも一興。

PALO ALTO TINY BASIC V3.0 末尾の入出力部抜粋。

;
CRLF: 	MVI 	A, 0DH  		;CR in A
;    				;***********************
OUTCH:	JMP 	USEOUT  	;*** JMP USER-OUTPUT ***
;    				;***********************
CHKIO: 	JMP 	USEINP  	;*** JMP USER-INPUT  ***
;    				;***********************
GETLN: 	LXI 	D, BUFFER 	;*** MODIFY THIS *******
;    				;***********************
GL1: 	CALL 	OUTCH  	;prompt or echo
GL2:
 	CALL 	CHKIO  		;get a character
 	JZ 	GL2  		;wait for input
 	CPI 	LF
 	JZ 	GL2
L3: 	STAX 	D  		;save char.
 	CPI 	08H  		;is it Back-Space?
 	JNZ 	GL4  		;no, more tests
 	MOV 	A, E  		;yes, delete?
 	CPI 	LOW BUFFER
 	JZ 	GL2  		;nothing to delete
 	LDAX 	D  		;delete
 	DCX 	D
 	JMP 	GL1
GL4: 	CPI 	CR  		;was it CR?
 	JZ 	GL5  		;yes, end of line
 	MOV 	A, E  		;else, more free room?
 	CPI 	LOW BUFEND
 	JZ 	GL2  		;no, wait for CR/Rub-Out
 	LDAX 	D  		;yes, bump pointer
 	INX 	D
 	JMP 	GL1
GL5: 	INX 	D  		;end of line
 	INX 	D  		;bump pointer
 	MVI 	A, 0FFH  	;put marker after it
 	STAX 	D
 	DCX 	D
 	JMP 	CRLF
;-------------------------------
USEOUT:
	OUT	1
 	CPI 	CR  		;was it CR?
 	RNZ   			;no, return
 	MVI 	A, LF  		;yes, give LF
 	CALL 	USEOUT
 	MVI 	A, CR
 	RET
;-------------------------------
USEINP:
	IN	2
	ORA	A
 	RZ   			;no input, return zero
;-------------------------------
	IN	3
 	ANI 	7FH
 	CPI 	3  		;is it Control-C?
 	RNZ   			;no, return char
 	JMP 	INIT  		;yes, restart
;-------------------------------
	END
広告

8080のTinyBASICで遊ぶ その2 – TinyBASIC本体コード” への2件のフィードバック

コメントを残す

以下に詳細を記入するか、アイコンをクリックしてログインしてください。

WordPress.com ロゴ

WordPress.com アカウントを使ってコメントしています。 ログアウト /  変更 )

Google フォト

Google アカウントを使ってコメントしています。 ログアウト /  変更 )

Twitter 画像

Twitter アカウントを使ってコメントしています。 ログアウト /  変更 )

Facebook の写真

Facebook アカウントを使ってコメントしています。 ログアウト /  変更 )

%s と連携中