Software für Alphatronic PC

  • helwie44 : Super!

    Zumindest hier http://www.retroarchive.org/cpm/lang/lang.htm ist das muLISP nicht aufgeführt!

    Die Herstellerfirma von muLISP war Software Warehouse auf Hawaii.


    Auf der WEB-Seite ist "The Software Warehouse LISP/80 v1.1" zu finden, das ist eine muLISP Version.

    Microsoft hat das Produkt nur in Lizenz verkauft.


    Die Firma hat mit muLISP als Basis auch das symbolische Mathematikprogramm "Derive" entwickelt, das es auch bis in Texas Instruments Taschenrechner geschafft hat.

  • Ok, aus der muLISP .IMD Diskette werde ich in der nächster Woche alles isolieren und ausprobieren / dokumentieren / hier ablegen.

    Soweit ich das bisher sehe - könnten die LISP - filekomponenten unter cp/m TPA 100h mit einem 8080 ablaufen. Klar auch mit Z80 oder 8085.


    Die anderen .IMDs werde ich auch in die Hand nehmen.

    Gibt es evtl. eine Originalbeschreibung von dem myLISP - wg. der diversen Lispdialekte ?

  • Leider kann ich die muLISP -PDF drucken!!!!

    Sehen beide Beschreibungen offenbar identisch ( nur anderes Seitenformat) .pdf‘s aus.

    Vielen Dank Toshi und SBC für die Unterlagen.

    Hier habe ich unter W 10 keine (PDF-Tools) nur die WEB-Browser vorhanden.



    Kann jemand diese PDF von hier ohne die DRUCK-Unterdrückung erneut hier ablegen. DANKE !!

  • Danke Toshi - fängt an zu drucken.

    Dann teste ich etwas mit dem LISP ( ist doch prima mit dem Ausdruck zum schnell nachzuschauen!) - unter meiner alphaTronic P2U 64 kB.

    Die .IMD mit dem LISP war auf einer 3,5 " für die TA PC8.

    Alles gut, aber ich habe alles von der 3,5" auf eine 5 1/4" Diskette DD/DS umgemodelt (mit HcX Emulator).

    Danach habe ich die zwei TRACKS ( 8 kB - das ist ein TA P2U/ P2S - 64 kb) übertragen. Also das bisherige TA PC 8 -3,5" überschrieben.


    Nun starten alle Progteile unter meiner TA alphaTronic P2U/P2S richtig. Jetzt kann es mit dem LIST los gehen. Aber etwas gemach....


    Brauchen evtl. TA PC 8 cp/m USER mit 5 1/4" Formaten?

    Ich meine z.B. netmercer wünschte doch gerade ein TA alphaTronic cp/m zusätzlich im cp/m (klar 100h TPA) zwei logische (FileFormat für eine TA PC8) DRIVES z,B, E: (LW1) und F: (LW) haben. Ist im FORUM alles vorhanden.

  • Ich hatte mal etwas mit muLISP gespielt (weil ich mir früher mal mit AutoLISP in AutoCAD ein paar Grafik-Import-Routinen programmiert hatte).

    Prinzipiell funktioniert es, ist aber doch relativ limitiert und weicht auch in einigen Punkten von den bekannteren LISP Dialekten ab.


    Am meisten fiel mir auf:

    • viele sonst üblich Bezeichnungen sind anders und lang (z.B. "PLUS" anstelle von "+")
    • keine Fließkommazahlen (wie klassisches FORTH)
    • die meisten Funktionen nehmen nur zwei Parameter und keine Listen, andere LISPs nehmen beliebig viele, z.B. (+ 1 2 3 4 5) und liefern die Summe aller Zahlen in der Liste. muLISP nimmt nur zwei und liefert in diesem Falle "3" als Ergebnis).

    Zum Spielen habe ich mir mit einem Texteditor (Turbo Pascal in meinem Fall) eine Datei MYDEFS.LIB mit meinen Definitionen erstellt, damit ich nicht immer alles eintippen muss (und Klammern zählen)

    Diese Datei kann man dann schnell mit

    (RDS MYDEFS LIB)

    in muLISP einlesen.


    Darin habe ich mir ein paar der üblicheren Funktionsnamen definiert:

    % math %

    (PUTD (QUOTE *) (QUOTE (LAMBDA (A B) (TIMES A B))))

    (PUTD (QUOTE /) (QUOTE (LAMBDA(A B)(QUOTIENT A B))))

    (PUTD (QUOTE +) (QUOTE (LAMBDA(A B)(PLUS A B))))

    (PUTD (QUOTE -) (QUOTE (LAMBDA(A B)(PLUS A (MINUS B)))))

    (PUTD (QUOTE >) (QUOTE (LAMBDA(A B)(GREATERP A B))))

    (PUTD (QUOTE <) (QUOTE (LAMBDA(A B)(GREATERP B A))))

    (PUTD (QUOTE ABS)(QUOTE(LAMBDA(A)((< A 0)(MINUS A))A)))

    (PUTD (QUOTE INC) (QUOTE (LAMBDA(A)(+ A 1))))

    (PUTD (QUOTE DEC) (QUOTE (LAMBDA(A)(- A 1))))

    % define function %

    (PUTD DEFUN (QUOTE (NLAMBDA (FUNC EXP)

    ((EQUAL (GETD FUNC) EXP))

    ( ((NULL (GETD FUNC)))

    (PRIN1 "*** REDEFINING ")

    (PRINT FUNC) )

    (PUTD FUNC EXP)

    FUNC )) )

    % FOR Schleife (for prozedurale Denker)

    (PUTD (QUOTE FOR) (QUOTE (LAMBDA (FROM TO STEP EXE I)

    ( (SETQ I FROM)

    (LOOP ((GREATERP I TO))

    (EVAL EXE)

    (SETQ I (+ I STEP)))

    ))))


    % set variables %

    (DEFUN SETQQ (NLAMBDA(NAME EXP)(SET NAME EXP)NAME))

    (DEFUN PUTQQ (NLAMBDA(NAME ATM EXP)(PUT NAME ATM EXP)NAME))

    (DEFUN FLAGQQ (NLAMBDA(NAME ATM)(FLAG NAME ATM)NAME))


    Die dort definierte "FOR" Schleife kann man dann z.B. so verwenden:

    (FOR 1 10 2 (QUOTE ((PRIN1 I)

       (PRIN1 " * 2 = ")

       (PRINT (* 2 I)))))

    Sicher nicht sehr LISP-konform, aber immerhin...

  • ... meine Bemerkung "sicher nicht sehr LISP-konform" bezog sich eher auf meine FOR Konstruktion.


    In LISP würde man so eine Schleife wohl eher rekursiv über alle Elemente einer Liste machen. Da muss man manchmal etwas anders denken bis man es richtig versteht - ähnlich wie bei "prozedural" gegen "objektorientiert".


    Insgesamt ist es schon bemerkenswert, was man in muLISP alles eingebaut hat und mit wie wenig Speicherbedarf. Und die muSIMP und muMATH Programme bauen dann darauf auf. Damit kann man schon einiges an symbolischer Mathematik machen (z.B. Ableitungen von Funktionen etc.).