VolksForth/AtariST/STRINGS.FB

1 line
12 KiB
Plaintext
Raw Normal View History

2017-04-23 22:25:49 +00:00
\\ *** Strings *** 13oct86we Dieses File enth<74>lt einige Grundworte zur Stringverarbeitung, vor allem ein SEARCH f<>r den Editor. Ebenfalls sind Worte zur Umwandlung von counted Strings (Forth) in 0-terminated Strings, wie sie z.B. vom Betriebssystem oft benutzt werden, vorhanden. Beim SEARCH entscheidet die Variable CAPS , ob Gro<72>- und Kleinschreibung unterschieden wird oder nicht. Ist CAPS ON, so werden gro<72>e und kleine Buchstaben gefunden, die Suche dau- ert allerdings l<>nger. c>0" wandelt einen String mit f<>hrendem Countbyte in einen mit 0 abgschlossenen, wie er vom Betriebssystem oft gebraucht wird. 0>c" arbeitet umgekehrt. \ String Functions Loadscreen 25may86we 1 4 +thru \ -text 13oct86we Variable caps caps off Code -text ( addr0 len addr1 -- n ) SP )+ D6 move D6 reg) A1 lea SP )+ D0 move 0= IF SP ) clr Next THEN 1 D0 subq SP )+ D6 move D6 reg) A0 lea Label comp .b A0 )+ A1 )+ cmpm comp D0 dbne .w D0 clr .b A0 -) D0 move A1 -) D0 sub .w D0 ext D0 SP -) move Next end-code Label >upper ( D3 -> D3 ) .b Ascii a D3 cmpi >= IF Ascii z D3 cmpi <= IF bl D3 subi THEN THEN rts \ -capstext compare 13oct86we | Code -capstext ( addr0 len addr1 -- n ) SP )+ D6 move D6 reg) A1 lea SP )+ D0 move 0= IF SP ) clr Next THEN 1 D0 subq SP )+ D6 move D6 reg) A0 lea Label capscomp .b A0 )+ D3 move >upper bsr D3 D1 move A1 )+ D3 move >upper bsr D3 D2 move D1 D2 cmp capscomp D0 dbne .w D1 clr .b A0 -) D3 move >upper bsr D3 D1 move A1 -) D3 move >upper bsr D3 D2 move .b D2 D1 sub .w D1 SP -) move Next end-code : compare ( addr0 len addr1 -- n ) caps @ IF -capstext ELSE -text THEN ;