[新連載]復活!TINY BASIC
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
すべてはここからはじまりました。
中日電工も。
40年前を振り返りつつ新連載です。
〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜〜
[第38回]
●TINY BASICのソースプログラムファイル!
以前からいろいろご購入いただいておりますお客様からメールをいただきました。
TINY BASICのソースプログラムをみつけましたとのことで、リンク先を教えていただきました。
当連載で紹介しております雑誌記事コピーのPDFもありますが、なんとTEXT形式のソースプログラムファイルもダウンロードできます!
教えていただいたのはこちら(↓)のサイトです。
https://www.autometer.de/unix4fun/z80pack/ftp/altair/
そこの少し下の方
tinybasic-2.0.asm
がそのファイルです。
拡張子は.asmですが実体は.txtと同じプレーンテキストですからメモ帳やTerapadで開けます。
ただ各行のエンドコードが0D0Aではなくて0Aになっているのでメモ帳で開くと改行してくれません。
Terapadなら問題なく開けます。
さらに同サイトをよく見てみましたら、ソースプログラムファイルだけではなくて、完全なアセンブルリスト(出力ファイル)までありました。
tinybasic-2.0.prn
おお。
これはこれは。
これを使わせていただければ、今までのようにちょっと読みにくいPDFからのコピーではなくて、普通のテキストで読んでいただくことができます。
こんな感じです。
;
;*************************************************************
;
; WHAT FOLLOWS IS THE CODE TO EXECUTE DIRECT AND STATEMENT
; COMMANDS. CONTROL IS TRANSFERED TO THESE POINTS VIA THE
; COMMAND TABLE LOOKUP CODE OF 'DIRECT' AND 'EXEC' IN LAST
; SECTION. AFTER THE COMMAND IS EXECUTED, CONTROL IS
; TRANSFERED TO OTHERS SECTIONS AS FOLLOWS:
;
; FOR 'LIST', 'NEW', AND 'STOP': GO BACK TO 'RSTART'
; FOR 'RUN': GO EXECUTE THE FIRST STORED LINE IF ANY, ELSE
; GO BACK TO 'RSTART'.
; FOR 'GOTO' AND 'GOSUB': GO EXECUTE THE TARGET LINE.
; FOR 'RETURN' AND 'NEXT': GO BACK TO SAVED RETURN LINE.
; FOR ALL OTHERS: IF 'CURRENT' -> 0, GO TO 'RSTART', ELSE
; GO EXECUTE NEXT COMMAND. (THIS IS DONE IN 'FINISH'.)
;*************************************************************
;
; *** NEW *** STOP *** RUN (& FRIENDS) *** & GOTO ***
;
; 'NEW(CR)' SETS 'TXTUNF' TO POINT TO 'TXTBGN'
;
; 'STOP(CR)' GOES BACK TO 'RSTART'
;
; 'RUN(CR)' FINDS THE FIRST STORED LINE, STORE ITS ADDRESS (IN
; 'CURRENT'), AND START EXECUTE IT. NOTE THAT ONLY THOSE
; COMMANDS IN TAB2 ARE LEGAL FOR STORED PROGRAM.
;
; THERE ARE 3 MORE ENTRIES IN 'RUN':
; 'RUNNXL' FINDS NEXT LINE, STORES ITS ADDR. AND EXECUTES IT.
; 'RUNTSL' STORES THE ADDRESS OF THIS LINE AND EXECUTES IT.
; 'RUNSML' CONTINUES THE EXECUTION ON SAME LINE.
;
; 'GOTO EXPR(CR)' EVALUATES THE EXPRESSION, FIND THE TARGET
; LINE, AND JUMP TO 'RUNTSL' TO DO IT.
;
0132 CDC504 NEW: CALL ENDCHK ;*** NEW(CR) ***
0135 211708 LXI H,TXTBGN
0138 221508 SHLD TXTUNF
;
013B CDC504 STOP: CALL ENDCHK ;*** STOP(CR) ***
013E C3BA00 JMP RSTART
;
0141 CDC504 RUN: CALL ENDCHK ;*** RUN(CR) ***
0144 111708 LXI D,TXTBGN ;FIRST SAVED LINE
;
0147 210000 RUNNXL: LXI H,0 ;*** RUNNXL ***
014A CD4305 CALL FNDLP ;FIND WHATEVER LINE #
1
8080 MACRO ASSEMBLER, VER 3.0 ERRORS = 0
+ 13:28 11/10/2019
+ PAGE 7
014D DABA00 JC RSTART ;C:PASSED TXTUNF, QUIT
;
0150 EB RUNTSL: XCHG ;*** RUNTSL ***
0151 220108 SHLD CURRNT ;SET 'CURRENT'->LINE #
0154 EB XCHG
0155 13 INX D ;BUMP PASS LINE #
0156 13 INX D
;
0157 CD8706 RUNSML: CALL CHKIO ;*** RUNSML ***
015A 21C006 LXI H,TAB2-1 ;FIND COMMAND IN TAB2
015D C33E07 JMP EXEC ;AND EXECUTE IT
;
0160 DF GOTO: RST 3 ;*** GOTO EXPR ***
0161 D5 PUSH D ;SAVE FOR ERROR ROUTINE
0162 CDC504 CALL ENDCHK ;MUST FIND A CR
0165 CD3B05 CALL FNDLN ;FIND THE TARGET LINE
0168 C2A000 JNZ AHOW ;NO SUCH LINE #
016B F1 POP PSW ;CLEAR THE PUSH DE
016C C35001 JMP RUNTSL ;GO DO IT
|
さっそく有難く使わせていただこうと思ったのですが…。
さらによくよく見ましたら、昨年出力したばかりのリストのようです。
サイトを確認しますとどうやら個人の方がやってみえるサイトのようで、特に引用不可ということでもないようなのですが。
いや、でも、何十年も昔のものでしたらともかくとしてまだ一年も経っていないような出力したてのリストを黙って使わせていただくというのはいかがなものかと思ってしまいます。
ですので、やっぱりここは今まで通り雑誌からのPDFをコピーしたものを使わせていただくことにいたします。
ちょっと読みにくいというところにつきましては、前記のリンクからきれいな出力リストをダウンロードしていただいて、それをご参照いただきますようお願いいたします。
気分としましては、やっぱりレトロなものを説明するにはレトロなものから引用するほうが似合っているように思います。
それはそれとしまして貴重な情報を教えていただいた広島県のH様には心から感謝申し上げます。
今後ともよろしくお願いいたします。
復活!TINY BASIC[第38回]
2020.7.15upload
前へ
次へ
ホームページトップへ戻る