mirror of
https://github.com/PDP-10/its.git
synced 2026-02-27 17:22:35 +00:00
Updated RRS;SWCHAR to fix SWTXT3 to work correctly with multiline strings containing tabs.
This commit is contained in:
committed by
Lars Brinkhoff
parent
602a3fd499
commit
b8e98818d8
@@ -1859,7 +1859,7 @@
|
||||
<SET ST <REST .ST>> >>
|
||||
|
||||
|
||||
<DEFINE SWTXT3 (STR ;"INPUT TEXT STRING"
|
||||
;<DEFINE SWTXT3 (STR ;"INPUT TEXT STRING"
|
||||
"OPT" (X 0) (Y 500) (SP 12)
|
||||
"AUX" (LX .X) (LY .Y) (YSP 25) )
|
||||
#DECL ((STR) STRING (X Y SP YSP) FIX (VALUE) ATOM)
|
||||
@@ -1876,13 +1876,63 @@
|
||||
<COND (<G? .S 1000> <SET S 0> <SET T <- .T .YSP>>)>
|
||||
<SET ST <REST .ST>> >>
|
||||
|
||||
<SETG SPCTAB 4> ;"SPACES PER TAB"
|
||||
;<SETG SPCTAB 4> ;"SPACES PER TAB"
|
||||
|
||||
<DEFINE TB2SP (CRP "AUX" (SPCTAB ,SPCTAB))
|
||||
;<DEFINE TB2SP (CRP "AUX" (SPCTAB ,SPCTAB))
|
||||
#DECL((VALUE SPCTAB CRP NSP) FIX)
|
||||
;" calculate number of spaces needed to the
|
||||
; reach the next tab postion"
|
||||
<SET NSP <- .SPCTAB <MOD .CRP .SPCTAB>>> >
|
||||
;"display a multi-line text with tab handling"
|
||||
<DEFINE SWTXT3 (STR ;"INPUT TEXT STRING"
|
||||
"OPT" (X 0) (Y 500) (SP 12)
|
||||
"AUX" (LX .X) (LY .Y) (YSP 25) (CCHRP 1))
|
||||
#DECL ((STR) STRING (X Y SP YSP CCHRP) FIX (VALUE) ATOM)
|
||||
<REPEAT ((S .X) (T .Y) (ST .STR) CHR)
|
||||
#DECL ((S T)FIX (ST) STRING (CHR) CHARACTER)
|
||||
<COND (<EMPTY? .ST> <RETURN ,NULL>)
|
||||
(T <SET CHR <1 .ST>>)>
|
||||
<COND (<==? .CHR <ASCII 13>> ;" CR HANDLER "
|
||||
<SET CCHRP 1> <SET S .LX>) ;" RESET TO BEGINNING OF LINE"
|
||||
(<==? .CHR <ASCII 10>> <SET T <- .T .YSP>>) ;" LF HANDLER"
|
||||
(<==? .CHR <ASCII 09>> ;" TAB HANDLER"
|
||||
<SET CCHRP <TABPOS .CCHRP>> ;" CALC NEW LINE POS"
|
||||
<SET S <+ .X <* .SP .CCHRP>> >) ;" CALC NEW X POS"
|
||||
(T <CHARGE .CHR .S .T> ;"DRAW CHAR & INC X POSITION,"
|
||||
<SET S <+ .S .SP>>)> ;"ONLY IF CHAR ISN'T SPECIAL"
|
||||
<SET CCHRP <+ .CCHRP 1>> ;"INC CHAR COUNT ON THE LINE "
|
||||
<COND (<G? .S 1000> <SET S 0> <SET T <- .T .YSP>>)>
|
||||
<SET ST <REST .ST>> >>
|
||||
|
||||
|
||||
|
||||
<SETG SPCTAB 8> ;"SPACES PER TAB"
|
||||
|
||||
|
||||
<DEFINE TB2SP (CRP "AUX" (SPCTAB ,SPCTAB) NSP)
|
||||
;" Calc # of spaces to next tab stop"
|
||||
#DECL((VALUE SPCTAB CRP NSP) FIX)
|
||||
<SET NSP <- .SPCTAB <MOD .CRP ,SPCTAB>>>>
|
||||
|
||||
|
||||
<DEFINE TABPOS (CRP)
|
||||
;" Calc line position off tab stop"
|
||||
#DECL((VALUE SPCTABCRP) FIX)
|
||||
<+ .CRP <TB2SP .CRP>>>
|
||||
|
||||
|
||||
|
||||
<SETG TSTSTR6 "
|
||||
000000000111111111122222222223333333333444444444455555555556666666666
|
||||
123456789012345678901234567890123456789012345678901234567890123456789
|
||||
0 1 2 3 4 5 6 7 8
|
||||
0 2 4 6 8
|
||||
0 3 6 8
|
||||
0 4 8
|
||||
">
|
||||
|
||||
<DEFINE TABTST ("OPT" (X 100) (Y 500)) <SWTXT3 ,TSTSTR6 .X .Y>>
|
||||
|
||||
|
||||
|
||||
<SETG TSTSTR "THIS IS A TEST OF
|
||||
Reference in New Issue
Block a user