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

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) をDOS上で動くCP/Mシミュレータで動かしてPATBSIM.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

PATBSIM.HEX

:03010000C300F049
:10F00000310002CDA5F72180003EC3BECA26F077AD
:10F010002100A02281003EF032C8002106202200FB
:10F020002026FF220220112FF0CD72F6C35DF05092
:10F03000414C4F20414C544F2054494E592042419D
:10F040005349432056332E300D4F4B0D57484154F2
:10F050003F0D484F573F0D534F5252590D3100024B
:10F060002167F022B70021000022BD0022B9001163
:10F0700049F0CD72F63E3ECDADF7D511CA00CDDCDC
:10F08000F5CD2FF57CB5C1CAD6F01B7C121B7D12C5
:10F09000C5D57993F5CD71F5D5C2ACF0D5CD8AF54E
:10F0A000C12A0020CD0DF66069220020C12A00206F
:10F0B000F1E5FE03CA5DF0855F3E008C572A8100B2
:10F0C000EBCDFAF4D26AF5220020D1CD18F6D1E1C9
:10F0D000CD0DF6C375F0210FF7CD2FF5D51A13FE20
:10F0E0002ECAFAF023BECADDF03E7F1BBEDA01F164
:10F0F00023BED2F0F023D1C3D9F03E7F23BED2FC91
:10F10000F07E236EE6FF67F1E9CD37F5C31BF0CD46
:10F1100037F5C35DF0CD37F5110220210000CD7920
:10F12000F5DA5DF0EB22B700EB1313CDAAF7211F40
:10F13000F7C3D9F0CD68F3D5CD37F5CD71F5C2075A
:10F14000F6F1C324F1D300C9CDDCF5E521FFFFCDF5
:10F15000C8F52C03CDDCF5E3CD37F5CD71F5DA5DDF
:10F16000F0E37CB5CA5DF02BE3CDFFF6CD72F6CDB2
:10F17000AAF7CD79F5C35EF10E08CDC8F53B06CDF3
:10F18000A5F7C32BF1CDC8F50D24CDA5F7C31BF111
:10F19000CDC8F5230ECD68F33EC0A5B4C206F64D2A
:10F1A000C3A9F1CD81F6C3C7F1CDC8F52C13CDC8E5
:10F1B000F52C083E20CDA7F7C3AEF1CD1CF5C390CA
:10F1C000F1CDA5F7C316F5CD68F3C5CDBBF6C1C328
:10F1D000A9F1CD43F6CD68F3D5CD71F5C207F62A76
:10F1E000B700E52AB900E521000022BD003922B9A7
:10F1F00000C324F1CD37F52AB9007CB5CA3DF5F935
:10F20000E122B900E122B700D1CD27F6C316F5CD32
:10F2100043F6CD00F52B22BD002180F7C3D9F0CDF8
:10F2200068F322C1002186F7C3D9F0CD68F3C33457
:10F23000F221010022BF002AB70022C300EB22C541
:10F2400000010A002ABD00EB606839C34FF2097E55
:10F2500023B6CA6FF27E2BBAC24EF27EBBC24EF20A
:10F26000EB21000039444D210A0019CD18F6F92A86
:10F27000C500EBC316F5CD96F5DA3DF522BB00D5FA
:10F28000EB2ABD007CB5CA3EF5CDFAF4CA99F2D19D
:10F29000CD27F62ABB00C37FF25E23562ABF00E5C6
:10F2A0007CAA7A19FAABF2ACFACFF2EB2ABD007362
:10F2B00023722AC100F1B7F2BBF2EBCDF0F4D1DA40
:10F2C000D1F22AC30022B7002AC500EBC316F5E12C
:10F2D000D1CD27F6C316F5210000C3E0F2CD68F3C7
:10F2E0007CB5C22BF1CD8CF5D224F1C35DF02ABBE5
:10F2F00000F9E122B700D1D1D5CD81F6C327F3CDF6
:10F3000096F5DA1BF3CD39F311CA00CD68F3CD378A
:10F31000F5D1EB732372E122B700D1F1CDC8F52C02
:10F3200003C3F8F2C316F5D5CD96F5D231F3C33D3C
:10F33000F543D1CDB0F6C305F3C1D5EB2AB700E54F
:10F3400021F8F222B7002100003922BB00D53E206F
:10F35000C5C3ADF71AFE0DCA65F3CD00F5CDC8F5EE
:10F360002C03C35AF3C316F5CDB0F3E5218EF7C3D2
:10F37000D9F0CD9BF3D86FC9CD9BF3C86FC9CD9B96
:10F38000F3C8D86FC9CD9BF36FC8D86CC9CD9BF3B8
:10F39000C06FC9CD9BF3D06FC9E1C979E1C1E5C5A3
:10F3A0004FCDB0F3EBE3CDF0F4D12100003E01C925
:10F3B000CDC8F52D06210000C3E2F3CDC8F52B0022
:10F3C000CDECF3CDC8F52B15E5CDECF3EBE37CAA42
:10F3D0007A19D1FAC3F3ACF2C3F3C306F6CDC8F57C
:10F3E0002D92E5CDECF3CDDBF4C3CCF3CD50F4CDD1
:10F3F000C8F52A2DE5CD50F40600CDD8F4E3CDD8DC
:10F40000F4EBE37CB7CA0EF47AB2EBC207F67D21C7
:10F410000000B7CA42F419DA07F63DC216F4C34237
:10F42000F4CDC8F52F4EE5CD50F40600CDD8F4E369
:10F43000CDD8F4EBE3EB7AB3CA07F6C5CDBBF460E5
:10F4400069C1D17CB7FA06F678B7FCDBF4C3EFF3F9
:10F45000216BF7C3D9F0CD96F5DA61F47E23666FA0
:10F46000C9CDDCF578B7C0CDC8F52809CD68F3CD96
:10F47000C8F52901C9C33DF5CD67F47CB7FA06F696
:10F48000B5CA06F6D5E52AC70011A5F7CDFAF4DA14
:10F4900095F42100F05E235622C700E1EBC5CDBBF9
:10F4A000F4C1D123C9CD67F41BCDD8F413C92A0008
:10F4B00020D5EB2A8100CDD1F4D1C9E56C2600CD51
:10F4C000C6F4417DE1670EFF0CCDD1F4D2C8F4192A
:10F4D000C97D936F7C9A67C97CB7F07CB5C87CF511
:10F4E0002F677D2F6F23F1ACF206F678EE8047C9C7
:10F4F0007CAAF2F6F4EBCDFAF4C97CBAC07DBBC9A4
:10F50000CD96F5DA3DF5E5CDC8F53D0DCD68F34472
:10F510004DE1712370C9CD1CF5C33DF5CDC8F53B58
:10F5200004F1C32BF1CDC8F50D04F1C31BF1C91AC9
:10F53000FE20C013C32FF5CD2FF5FE0DC8D5114CFD
:10F54000F0CDA5F7CD72F62AB700E57E23B6D1CA75
:10F5500026F07EB7FAEEF2CDFFF6C141CDB0F63E11
:10F560003FCDA7F7CD72F6C326F0D51157F0C341B2
:10F57000F57CB7FA06F6110220131A1B87D81A95E4
:10F5800047131A9CDA8BF51BB0C913131AFE0DC270
:10F590008BF513C379F5CD2FF5D640D8C2B8F51346
:10F5A000CD67F429DA06F6D5EBCDAEF4CDFAF4DA70
:10F5B0006BF5CD6CF619D1C9FE1B3FD81321810024
:10F5C00007856F3E008C67C9E3CD2FF5BE23CAD8EF
:10F5D000F5C54E060009C11B1323E3C921000044F1
:10F5E000CD2FF5FE30D8FE3AD03EF0A4C206F60488
:10F5F000C5444D292909291A13E60F856F3E008C51
:10F6000067C11AF2E3F5D51152F0C341F5CDFAF412
:10F61000C81A021303C30DF67892C220F67993C874
:10F620001B2B1A77C318F6C1E122BD007CB5CA4175
:10F63000F6E122BF00E122C100E122C300E122C5C0
:10F6400000C5C9215201CDDBF4C139D26AF52ABD0A
:10F65000007CB5CA69F62AC500E52AC300E52AC1BF
:10F6600000E52ABF00E52ABD00E5C5C92A00202B18
:10F670002BC997471A13B8C8CDA7F7FE0DC274F669
:10F68000C9CDC8F5220F3E22CD73F6FE0DE1CA1B8F
:10F69000F1232323E9CDC8F527053E27C388F6CDFE
:10F6A000C8F55E0B1AEE40CDA7F71A13C38BF6C947
:10F6B0007BB8C81ACDA7F713C3B0F60600CDD8F4AF
:10F6C000F2C6F6062D0DD5110A00D50DC5CDBBF439
:10F6D00078B1CADDF6E32DE56069C3CDF6C10D79D9
:10F6E000B7FAECF63E20CDA7F7C3DEF678B7C4A78D
:10F6F000F75D7BFE0AD1C8C630CDA7F7C3F2F61A74
:10F700006F131A67130E04CDBBF63E20CDA7F7C9C1
:10F710004C495354F1484E4557F10952554EF11595
:10F720004E455854F2764C4554F35A4946F2DD475B
:10F730004F544FF134474F535542F1D2524554552F
:10F74000524EF1F452454DF2D7464F52F20F494E08
:10F75000505554F2F85052494E54F17853544F508A
:10F76000F10F454E44F145F769C354F3524E44F44A
:10F7700078414253F4A553495A45F4AEF77EC35637
:10F78000F4544FF21FF53D53544550F22BF2313EE5
:10F790003DF37223F3783EF37E3DF38D3C3DF385DC
:10F7A0003CF393F3993E0DC3E8F7C3F5F711CA0094
:10F7B000CDA7F7CDAAF7CAB3F7FE0ACAB3F712FE70
:10F7C00008C2CFF77BFECACAB3F71A1BC3B0F7FE55
:10F7D0000DCADFF77BFE4ECAB3F71A13C3B0F71397
:10F7E000133EFF121BC3A5F7D301FE0DC03E0ACD89
:10F7F000E8F73E0DC9DB02B7C8DB03E67FFE03C0B6
:03F80000C300F052
:0000000000
広告

コメントを残す

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

WordPress.com ロゴ

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

Google+ フォト

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

Twitter 画像

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

Facebook の写真

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

%s と連携中