1KBのプログラム領域の後半512byte部分を使って、51件まで日付、項目、金額の保存に対応。
実行して、3項目を入力すると今までのリストを表示して、合計を計算、自動的にデータも保存されます。
項目名を入力する時は、頭にダブルクォーテーションをつけるのを忘れずに!
プログラムは5行、294byte
10 CLS:?"オコヅカイチョウ":?:INPUT"イクラ?",Y:IFYINPUT"ナニニ?",W:INPUT" イツ?",D 20 S=0:A=#E01:N=PEEK(A-1):IFN>51?"イッパイ":END 30 ?:IFYB=A+N*10:COPYB,W,5:POKEB+5,0,D,D>>8,Y,Y>>8:N=N+1:POKEA-1,N 40 IFNFORI=1TON:COPY#8D4,A+6,4:?DEC$(E,4),DEC$(F,6),STR$(A):A=A+10:S=S+F:NEXT 50 ?:?DEC$(S,12),"ザンダカ":IFYSAVE
10行 タイトル表示、項目入力
20行 件数読み込み、保存件数チェック
30行 データ書き込み
40行 データ読み込み、合計計算
50行 合計表示
プログラムはメモリ#800から#FFFまでの1024byteに保存される(HELPコマンド参照)。半分の#E00から#FFFの512byteを使ってデータ保存しています(20行)。データ件数は、?PEEK(#E00)で確認でき、POKE#E00,0でデータをリセットできます。
40行の COPY#8D4,A+6,4 は、変数EとFに数値を読み込んでいます。変数はメモリ#800から#900までの256byte(HELPコマンド参照)。先頭204byteが配列でその後A〜Zまでの26コ52byteが続きます。#8D4は#800から102+4進めたEとFの位置ということです。COPYコマンドを使うことで、E=PEEK(A+6)+PEEK(A+7)<<8:F=PEEK(A+8)+PEEK(A+9)<<8 と書くより短くなります。
タイトルや表示方法、使いやすいように変えてみよう!(?FREE() が512を切るとデータが破壊されてしまうので注意!)
いっぱいになったら、プログラム番号を変えて「クリコシ」から始めよう。 空いている730byteを全部使って、72件まで入力できるようにするのもあり。 RTCを使って日付を自動入力にしたり、EEPROMを使っていくらでも保存できるようにするのもあり。(下記は文字、英語表記版)
10 CLS:?"MONEY BOOK":?:INPUT"HOW MUCH?",Y:IFYINPUT"WHAT?",W:INPUT"WHEN?",D 20 S=0:A=#E01:N=PEEK(A-1):IFN>51?"FULL":END 30 ?:IFYB=A+N*10:COPYB,W,5:POKEB+5,0,D,D>>8,Y,Y>>8:N=N+1:POKEA-1,N 40 IFNFORI=1TON:COPY#8D4,A+6,4:?DEC$(E,4),DEC$(F,6),STR$(A):A=A+10:S=S+F:NEXT 50 ?:?DEC$(S,12),"SUM":IFYSAVE
PCN金沢の久保田さんからのクリスマスプレゼント「ざべ」こと「THE BASIC」の合本。
「THE BASIC / B-Number VOL3 / 1984年1月号〜3月号合本」
PC-8001/8801(N-BASIC)向けに「実用DISK BASIC教室 A氏のプログラミング」として亭主おこづかいシステムという例が元ネタです。
この頃の記事は、フロッピーディスクをセクター単位で読んで解析したり、BASICの限界を追求するためマシン語を駆使したりと、なかなか高度な遊びが繰り広げられていて楽しいです。IchigoJam BASICは、プログラム1KB、RAM4KBの狭空間。軽い気持ちでトライください!