\ FEUER Demo FEUERMELDER Anwendung ALL 11:26 14MAY93 \ Last changed screen # 000 ALL 11:26 14MAY93
\ (C) 1993 by Dipl.-Ing. Wolfgang Allinger 'ALL0593' \ c/o Ingenieurbuero Allinger \ Brander Weg 6 Tel/FAX: (+49)+212/66811 \ D-42699 Solingen Germany \ noncommercial use granted !!!
\ Diese lauffähige Demo zeigt, wie eine anwenderfreundliche, \ selbstdokumentierende Sprache am Beispiel eines FEUERMELDER \ aussieht. Hinweis: alles in "( )" und nach "\" ist Kommentar. \ ":" ... ";" sind neue Definitionen. \ "Feueralarm?" und "Feueralarm_bearbeiten" sind 2!! Programme. \ Diese Demo belegt weniger als 700 byte Programmspeicher und \ läuft praktisch auf beliebigen Rechnern ohne Änderung. \ HISTORY MASTER LOAD SCREEN ALL 11:19 14MAY93
DECIMAL \ default base
000 CONSTANT $VFEUER \ Version Kontrolle: -FEUER FORGET $VFEUER ; \ entfernt dieses Programm wieder
\ 2 ?SCREENS THRU \ 1 LOAD lädt dann die Anwendungsblöcke \ bei SEQ file system auskommentieren !
\ ALL0593 v0.00 first release
\ .VFEUER ... constants ... USER Interface ALL 10:16 14MAY93
: .VFEUER $VFEUER CR . ; \ zeige Versionsnr.
-1 CONSTANT ja
\ Bereich Meldung .. alle für die jeweilige Umgebung anpassen
VARIABLE Meldung \ bits gesetzt wenns qualmt, n. Zeile setzt 5 Meldung ! \ zB: bit0 = Melder1, bit2 = Melder3 : Melder@ ( a -- u ) @ ; \ liefert Datum aus Adresse Meldung CONSTANT Melder0 \ liefert Adresse der 1. Meldung : Rauch ; \ evtl eine Maske.. für geräuchertes
16 CONSTANT bits/Meldung \ zB 16bit oder was auch immer 16 CONSTANT alle \ Anzahl Melder\ Rauchmelder anwählen abfragen entdeckt? ALL 11:15 14MAY93
VARIABLE Rauchmelder \ 1 ... n
: anwählen ( d a -- ) NIP ( n 0 a -- n a ) ! ;
: abfragen ( a -- uMASKE uDATA )
@ 1- bits/Meldung /MOD ( -- rem qot ) Melder0 + Melder@ ( -- rem uDATA ) 1 ROT ( -- uDATA 1 rem ) SHIFT ( -- uDATA uMASKE ) \ rem -> MASKE SWAP ; ( -- uMASKE uDATA )
: entdeckt? ( uMASKE uDATA -- t=RAUCH) AND 0> ;
\ Feueralarm melden nächsten abgefragt? ALL 11:15 14MAY93
: Feueralarm ( -- ^string nMelder )
" Rauch an Melder Nr.: " ( -- ^string ) Rauchmelder @ ;
: melden ( ^string n -- ) CR SWAP COUNT TYPE . 7 EMIT ;
: nächsten ( -- d ) Rauchmelder @ 1+ 0 ;
: abgefragt? ( n a -- ? ) @ 1-