最新 RSS

tips@free BLOG

レトロなマイコン、電子工作、PCやフリーソフト関係のTipsと私的備忘録

<前の3件 次の3件>

2014/01/18

[z80][xlisp]自作Z80 CP/Mマシン(38)

引き続き XLISPのメモ。

一応動くようになり、簡単なプログラムを動かしていると if関数がおかしいことに気づきました、 例えば (if t 1 2) を評価させるとエラーになってしまいます。

付属のドキュメントを見ると if関数は (if <texpr> <expr1> [ <expr2> ]) で <txpr>は条件式、 <expr1>は真の時に評価で必須、 <expr2>は偽の時に評価で省略可となっています。

また、 (if t (1)(2)) のように引数をリストにするとエラーになりませんでした。

XLISP version 1.1
> (if t 1 2)
error: bad argument type    <- エラーになる
(if t 1 2)

> (if t (1)(2))
1                <- こちらは1が返ってくる

LISPと言えば emacsなんで、 scratchで試してみると、、

(if t 1 2)
1                              <- 1が返ってくる
(if t (1)(2))
Lisp error: (invalid-function 1)  <- こっちでエラーになる

やっぱりおかしいようです。

(環境は CP/M Z80 HI-TECH C ver3.09でコンパイル)

2014/01/16

[z80][xlisp]自作Z80 CP/Mマシン(37)

ブレッドボードZ80マイコンではTINY BASICを載せてTinyTrek(スタートレックのタイニー版)が動きました、古から自作マイコンでは定番ですね。

CP/Mが動き出せば TurboPascalや HI-TECH Cなどの本格的なものも数多く有りますが、今回は小型の LISPと FORTHで行こうと思います(笑。

ターゲットにするLISPですが、割とメジャー(本当か?)な LISP80ではなくて、C言語で書かれたPDS(パブリック・ドメインソ・フトウェア)の XLISP Ver1.1 です、 ソースは The Unofficial CP/M Web siteにありました。

xlisp.zip(オリジナルのソースです、CP/M80は AZTEC-C用に書かれています)

XLISP は David Betz(デビットベッツ)さんによりC言語で書かれ、最初の公開は1983年1月7日のようです。 Ver1.xは小規模なコンピュータ用のオブジェクト指向拡張 Lispで、2.xは Common Lispのサブセット、3.xは Schemeのスーパーセットだそうな、、Ver4.xや XLISP-PLUS、 XLISP-STATなんてのもあるらしい、、(汗

とりあえず HI-TECH C(Z80 ver3.09)でコンパイルが通るように修正して、シミュレータで動かしてみました。

$ ./cpm3

#######  #####    ###            #####    ###   #     #
     #  #     #  #   #          #     #    #    ##   ##
    #   #     # #     #         #          #    # # # #
   #     #####  #     #  #####   #####     #    #  #  #
  #     #     # #     #               #    #    #     #
 #      #     #  #   #          #     #    #    #     #
#######  #####    ###            #####    ###   #     #

Release 1.17, Copyright (C) 1987-2008 by Udo Munk 

CPU speed is unlimited

Booting...


LDRBIOS3 V1.2 for Z80SIM, Copyright 1989-2007 by Udo Munk

CP/M V3.0 Loader
Copyright (C) 1998, Caldera Inc.    

 BNKBIOS3 SPR  FC00  0400
 BNKBIOS3 SPR  9000  3000
 RESBDOS3 SPR  F600  0600
 BNKBDOS3 SPR  6200  2E00
 
 61K TPA

BANKED BIOS3 V1.6 for Z80SIM, Copyright 1989-2007 by Udo Munk

A>setdef [no display]

Program Name Display - Off

A>setdef [uk]

Date format used     - UK

A>setdef a:,b:,i:,*

Drive Search Path:
1st Drive            - A:
2nd Drive            - B:
3rd Drive            - I:
4th Drive            - Default


A>setdef [order=(com,sub)]

Search Order         - COM, SUB

A>setdef [temporary=a]

Temporary Drive      - A:

A>hist

History RSX active
A>p:
P>xlisp
XLISP version 1.1
> (princ "hello world!\n")
hello world!
()
> 

XLISPの詳細は 紫藤のWiki - XLISPXLISPの公式サイト(英文)wikipedia(英文)を参照。 書籍は CQ出版社発行の マイコンピュータ 1984 No.15に少しだけ載っています。

<前の3件 次の3件>