WAHNSINN: Der Atari kann Gedankenlesen!!!!
von cas » Do 4. Jan 2007, 22:54Ich habe heute festgestellt das mein Atari Gedankenlesen kann. Deiner bestimmt auch! Das ist Wahnsinn!
Wie geht es?
Tippe dieses Programm in einen Text-Editor auf dem Atari ab und speichere es in eine Datei "MINDREAD.FS" (SIO2PC Benutzer wissen sicherlich auch wie man den Text direkt uebertraegt, aber beim Eintippen lernt man gleich ein wenig Forth
)
Dann VolksForth laden (von der Sondermagazindiskette vom Oktober oder von http://volksforth.sf.net ), und
INCLUDE" D:MINDREAD.FS"
eingeben (Achtung, die Anführungszeichen sind Teil des INCLUDE" Befehls, dann kommt ein Leerzeichen, und dann der Dateiname).
Im Dezember-Magazin der Forth Gesellschaft, Seite 23ff, gibt es Hinweise warum dies funktioniert. Das Magazin kann als PDF unter
http://www.forth-ev.de/filemgmt/viewcat.php?cid=9
geladen werden.
Viel Spass dabei.
Carsten
Wie geht es?
Tippe dieses Programm in einen Text-Editor auf dem Atari ab und speichere es in eine Datei "MINDREAD.FS" (SIO2PC Benutzer wissen sicherlich auch wie man den Text direkt uebertraegt, aber beim Eintippen lernt man gleich ein wenig Forth

Dann VolksForth laden (von der Sondermagazindiskette vom Oktober oder von http://volksforth.sf.net ), und
INCLUDE" D:MINDREAD.FS"
eingeben (Achtung, die Anführungszeichen sind Teil des INCLUDE" Befehls, dann kommt ein Leerzeichen, und dann der Dateiname).
- Code: Alles auswählen
\ Mind Reader \ Gedankenlesen
\ based on an Article in VD/4/2006
\ by Michael Kalus
\ adapted to VolksForth by cas
CR .( Loading MindReader... ) CR
decimal
VARIABLE seed
$10450405 CONSTANT generator
: rnd ( -- n )
seed @ generator um*
drop 1+ dup seed ! ;
: random ( n -- n..0..n-1 )
rnd um* nip ;
: init ( -- )
$D20A C@ seed !
10 0 DO 100 random drop LOOP ;
\ choose a token, but no digit
: token ( -- x )
126 58 - random 58 + ;
VARIABLE symbol
: symbol! ( -- )
token symbol ! ;
\ print Control Chars (Atari Specific)
: cemit ( c -- )
$80 $2FE C! ( DSPFLG )
emit
$00 $2FE C! ;
: sy. ( -- )
symbol @ cemit ;
: symbol. ( i -- )
DUP 09 = IF sy. drop exit THEN
DUP 18 = IF sy. drop exit THEN
DUP 27 = IF sy. drop exit THEN
DUP 36 = IF sy. drop exit THEN
DUP 45 = IF sy. drop exit THEN
DUP 54 = IF sy. drop exit THEN
DUP 63 = IF sy. drop exit THEN
DUP 72 = IF sy. drop exit THEN
DUP 81 = IF sy. drop exit THEN
token cemit drop ;
: table.print ( -- )
CR 100 0 DO
I 2 .R SPACE
I symbol. SPACE
LOOP ;
: page 125 emit ; \ CLS
: text.de ( -- )
CR ." Gedankenlesen in Forth"
CR
CR ." Denke an eine 2stellige Zahl, z.B. 54"
CR ." Ziehe von dieser Zahl ihre 2 Ziffern"
CR ." ab: (54-5-4=45). Suche das Symbol zum"
CR ." Ergebnis in der Tabelle."
CR ." Konzentriere dich auf dieses Symbol"
CR ." und druecke eine Taste..." ;
: ?again.de ( -- )
CR ." Noch einmal? --> Leertaste " ;
: result.de ( -- )
." Es ist das Symbol: " ;
: text.en ( -- )
CR ." MindReader in Forth"
CR
CR ." Think of a number with 2 digits"
CR ." (eg. 54). Substract from this number"
CR ." its 2 digits: (54-5-4=45)"
CR ." Find the symbol that corresponds"
CR ." to this number in the table."
CR ." Concentrade on this symbol"
CR ." and press a key..." ;
: ?again.en ( -- )
CR ." Again? -- press space bar" ;
: result.en ( -- )
." It is the symbol: " ;
DEFER ?again.print
DEFER text.print
DEFER result.print
: main ( -- )
init
BEGIN
0 $52 C! \ set left margin
symbol!
page
text.print cr
table.print cr
key drop
cr result.print sy. cr
?again.print key $20 = 0=
UNTIL ;
\ German Version
: Gedankenlesen ( -- )
['] ?again.de IS ?again.print
['] text.de IS text.print
['] result.de IS result.print
main ;
\ English Version
: MindReader ( -- )
['] ?again.en IS ?again.print
['] text.en IS text.print
['] result.en IS result.print
main ;
CR .( ready. )
CR .( type "MINDREADER" for english text )
CR .( tippe "GEDANKENLESEN" fuer die )
CR .( deutsche Version )
CR
\ fin
Im Dezember-Magazin der Forth Gesellschaft, Seite 23ff, gibt es Hinweise warum dies funktioniert. Das Magazin kann als PDF unter
http://www.forth-ev.de/filemgmt/viewcat.php?cid=9
geladen werden.
Viel Spass dabei.
Carsten