585 lines
11 KiB
Plaintext
585 lines
11 KiB
Plaintext
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT SLIDE-SHOW-HANDLER:ANY:0:0
|
|
SET 'DEMO-VERSION?,1
|
|
RTRUE
|
|
|
|
|
|
.FUNCT READ-DEMO:ANY:1:2,ARG1,ARG2,CHR
|
|
SET 'DEMO-VERSION?,-1
|
|
READ ARG1,ARG2,DEMO-TIMEOUT,SLIDE-SHOW-HANDLER >CHR
|
|
EQUAL? DEMO-VERSION?,1 \?CCL3
|
|
CALL1 END-DEMO
|
|
RSTACK
|
|
?CCL3: WINPUT S-TEXT,15,-999
|
|
RETURN CHR
|
|
|
|
|
|
.FUNCT INPUT-DEMO:ANY:1:1,ARG,CHR
|
|
SET 'DEMO-VERSION?,-1
|
|
INPUT ARG,DEMO-TIMEOUT,SLIDE-SHOW-HANDLER >CHR
|
|
EQUAL? DEMO-VERSION?,1 \?CCL3
|
|
CALL1 END-DEMO
|
|
RSTACK
|
|
?CCL3: WINPUT S-TEXT,15,-999
|
|
RETURN CHR
|
|
|
|
|
|
.FUNCT READ-INPUT:ANY:0:0,TRM,TMP,FDEF,?TMP1
|
|
PRINTC 62
|
|
PUTB P-INBUF,1,0
|
|
?PRG1: ZERO? DEMO-VERSION? /?CCL5
|
|
CALL2 READ-DEMO,P-INBUF >TRM
|
|
JUMP ?CND3
|
|
?CCL5: READ P-INBUF,FALSE-VALUE >TRM
|
|
?CND3: CALL2 CONVERT-KEYS,TRM >TRM
|
|
EQUAL? TRM,13,10 /?REP2
|
|
EQUAL? TRM,CLICK1,CLICK2 \?CCL10
|
|
CALL2 MOUSE-INPUT,TRM
|
|
ZERO? STACK \?REP2
|
|
SOUND S-BEEP
|
|
JUMP ?PRG1
|
|
?CCL10: ADD FKEYS,2 >?TMP1
|
|
GET FKEYS,0
|
|
INTBL? TRM,?TMP1,STACK >TMP \?CCL15
|
|
GET TMP,1 >FDEF
|
|
ZERO? FDEF /?CCL15
|
|
GETB FDEF,1
|
|
ZERO? STACK /?CCL15
|
|
ADD 1,FDEF
|
|
CALL ADD-TO-INPUT,STACK,TRM >TRM
|
|
EQUAL? TRM,13,10 /?REP2
|
|
JUMP ?PRG1
|
|
?CCL15: SOUND S-BEEP
|
|
JUMP ?PRG1
|
|
?REP2: ICALL1 SCRIPT-INBUF
|
|
LEX P-INBUF,P-LEXV
|
|
RTRUE
|
|
|
|
|
|
.FUNCT CONVERT-KEYS:ANY:1:1,TRM
|
|
EQUAL? TRM,PAD0 \?CCL3
|
|
SET 'TRM,F10
|
|
RETURN TRM
|
|
?CCL3: LESS? TRM,PAD1 /?CND1
|
|
GRTR? TRM,PAD9 /?CND1
|
|
SUB TRM,PAD1
|
|
ADD F1,STACK >TRM
|
|
?CND1: RETURN TRM
|
|
|
|
|
|
.FUNCT MOUSE-INPUT:ANY:1:1,TRM
|
|
GET 0,27
|
|
GET STACK,1 >MOUSE-LOC-X
|
|
GET 0,27
|
|
GET STACK,2 >MOUSE-LOC-Y
|
|
GETP HERE,P?MOUSE
|
|
CALL STACK,TRM
|
|
RSTACK
|
|
|
|
|
|
.FUNCT ADD-TO-INPUT:ANY:2:2,FDEF,TRM,M,N,TMP,?TMP1
|
|
GETB FDEF,0 >M
|
|
GETB P-INBUF,1 >N
|
|
GETB FDEF,M
|
|
EQUAL? STACK,13,10 \?CND1
|
|
SET 'TRM,13
|
|
DEC 'M
|
|
?CND1: ADD N,2
|
|
ADD P-INBUF,STACK >TMP
|
|
ADD M,N >?TMP1
|
|
GETB P-INBUF,0
|
|
SUB STACK,1
|
|
LESS? ?TMP1,STACK /?CND3
|
|
SOUND 1
|
|
GETB P-INBUF,0
|
|
SUB STACK,N
|
|
SUB STACK,2 >M
|
|
?CND3: INC 'FDEF
|
|
COPYT FDEF,TMP,M
|
|
PUTB TMP,M,0
|
|
WINATTR -3,A-SCRIPT,O-CLEAR
|
|
PRINTT FDEF,M
|
|
ADD N,M
|
|
PUTB P-INBUF,1,STACK
|
|
EQUAL? TRM,13,10 \?CND5
|
|
CRLF
|
|
?CND5: WINATTR -3,A-SCRIPT,O-SET
|
|
RETURN TRM
|
|
|
|
|
|
.FUNCT SCRIPT-INBUF:ANY:0:0,BUF,CNT,N,CHR
|
|
GETB P-INBUF,1 >N
|
|
DIROUT D-SCREEN-OFF
|
|
ADD 1,P-INBUF >BUF
|
|
?PRG1: IGRTR? 'CNT,N /?REP2
|
|
GETB BUF,CNT >CHR
|
|
LESS? CHR,97 /?CCL8
|
|
GRTR? CHR,122 /?CCL8
|
|
SUB CHR,32
|
|
PRINTC STACK
|
|
JUMP ?PRG1
|
|
?CCL8: PRINTC CHR
|
|
JUMP ?PRG1
|
|
?REP2: CRLF
|
|
DIROUT D-SCREEN-ON
|
|
RTRUE
|
|
|
|
|
|
.FUNCT YES?:ANY:0:0,TMP
|
|
?PRG1: PRINTI "?
|
|
(Y is affirmative): >"
|
|
ZERO? DEMO-VERSION? /?CCL5
|
|
CALL2 INPUT-DEMO,1
|
|
JUMP ?CND3
|
|
?CCL5: INPUT 1
|
|
?CND3: CALL2 CONVERT-KEYS,STACK >TMP
|
|
EQUAL? TMP,13,10 /?CND6
|
|
CRLF
|
|
?CND6: EQUAL? TMP,89,121,CLICK1 /TRUE
|
|
EQUAL? TMP,CLICK2 /TRUE
|
|
EQUAL? TMP,78,110 \?PRG1
|
|
RFALSE
|
|
|
|
|
|
.FUNCT PRINT-CENTER-TABLE:ANY:0:1,TMAX,L,?TMP1
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >L
|
|
ZERO? TMAX /?CND1
|
|
WINGET -3,WYPOS >?TMP1
|
|
WINGET -3,WWIDE
|
|
SUB STACK,TMAX
|
|
DIV STACK,2
|
|
ADD STACK,1
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 XERASE,TMAX
|
|
?CND1: WINGET -3,WYPOS >?TMP1
|
|
WINGET -3,WWIDE
|
|
SUB STACK,L
|
|
DIV STACK,2
|
|
ADD STACK,1
|
|
CURSET ?TMP1,STACK
|
|
GET DIROUT-TABLE,0
|
|
PRINTT DIROUT-TABLE+2,STACK
|
|
RTRUE
|
|
|
|
|
|
.FUNCT XERASE:ANY:1:1,N,X,L,OX,OY,?TMP1
|
|
EQUAL? MACHINE,AMIGA \?CCL3
|
|
ZERO? SPACE-WIDTH \?CND4
|
|
DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
PRINTC 32
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >SPACE-WIDTH
|
|
?CND4: EQUAL? N,1 \?CND6
|
|
WINGET -3,WWIDE >?TMP1
|
|
WINGET -3,WXPOS
|
|
SUB ?TMP1,STACK
|
|
SUB STACK,1 >N
|
|
?CND6: MOD N,SPACE-WIDTH >X
|
|
DIV N,SPACE-WIDTH >N
|
|
ZERO? X /?CND8
|
|
INC 'N
|
|
?CND8: GETB SPACE-TABLE,0 >L
|
|
WINGET -3,WXPOS >OX
|
|
WINGET -3,WYPOS >OY
|
|
?PRG10: LESS? N,L \?CCL14
|
|
ICALL PRINT-TABLE,SPACE-TABLE,N
|
|
CURSET OY,OX
|
|
RTRUE
|
|
?CCL14: SUB N,L >N
|
|
ICALL PRINT-TABLE,SPACE-TABLE,L
|
|
JUMP ?PRG10
|
|
?CCL3: ERASE N
|
|
RTRUE
|
|
|
|
|
|
.FUNCT INVERSE-COLOR:ANY:0:0
|
|
EQUAL? MACHINE,AMIGA \?CCL3
|
|
HLIGHT H-INVERSE
|
|
RTRUE
|
|
?CCL3: COLOR BG-COLOR,FG-COLOR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT NORMAL-COLOR:ANY:0:0
|
|
EQUAL? MACHINE,AMIGA \?CND1
|
|
HLIGHT H-NORMAL
|
|
?CND1: COLOR FG-COLOR,BG-COLOR
|
|
RTRUE
|
|
|
|
|
|
.FUNCT TYPE-ANY-KEY:ANY:0:0,KEY
|
|
WINATTR -3,A-SCRIPT,O-CLEAR
|
|
PRINTI "[Type any key to continue]"
|
|
ZERO? DEMO-VERSION? /?CCL3
|
|
CALL2 INPUT-DEMO,1 >KEY
|
|
JUMP ?CND1
|
|
?CCL3: INPUT 1 >KEY
|
|
?CND1: WINATTR -3,A-SCRIPT,O-SET
|
|
RETURN KEY
|
|
|
|
.ENDSEG
|
|
|
|
.SEGMENT "SOFT-KEYS"
|
|
|
|
|
|
.FUNCT V-DEFINE:ANY:0:0,LINE,LINMAX,CHR,TMP,NLINE,FKEY,FDEF,LEFT,?TMP1
|
|
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS \?CND1
|
|
PICINF P-SOFT-KEY-SEG,YX-TBL /?CND1
|
|
?CND1: ZERO? DONE-DEFINE? \?CND4
|
|
PRINTI "Use the up-arrow and down-arrow keys"
|
|
GET 0,8
|
|
BTST STACK,32 \?CND6
|
|
PRINTI " or mouse"
|
|
?CND6: PRINTI " to move to the function key or operation you want. Double-click or carriage-return to perform operations."
|
|
CRLF
|
|
ICALL1 TYPE-ANY-KEY
|
|
ZERO? DONE-DEFINE? \?CND4
|
|
CALL1 MAX-SOFT-CMD >DONE-DEFINE?
|
|
?CND4: CLEAR -1
|
|
MUL 4,LINE
|
|
ADD 2,STACK
|
|
ADD FKEYS,STACK >FKEY
|
|
GET FKEY,1 >FDEF
|
|
GETB 0,33 >?TMP1
|
|
GETB FDEF,0
|
|
SUB ?TMP1,STACK
|
|
DIV STACK,2 >LEFT
|
|
GET FKEYS,0
|
|
DIV STACK,2 >LINMAX
|
|
SCREEN SOFT-WINDOW
|
|
FONT 4
|
|
WINGET SOFT-WINDOW,WFSIZE >TMP
|
|
BAND TMP,255 >MONO-X
|
|
GETB 0,32
|
|
SUB STACK,LINMAX
|
|
DIV STACK,2
|
|
MUL FONT-Y,STACK >?TMP1
|
|
MUL MONO-X,LEFT
|
|
WINPOS SOFT-WINDOW,?TMP1,STACK
|
|
ADD LINMAX,1
|
|
MUL FONT-Y,STACK >?TMP1
|
|
ADD FKEY-MAX-LEN,4
|
|
MUL MONO-X,STACK
|
|
ADD 1,STACK
|
|
WINSIZE SOFT-WINDOW,?TMP1,STACK
|
|
ICALL2 DISPLAY-SOFTS,LINE
|
|
ICALL DISPLAY-SOFT,FKEY,LINE,FALSE-VALUE
|
|
?PRG10: ZERO? DEMO-VERSION? /?CCL14
|
|
CALL2 INPUT-DEMO,1
|
|
JUMP ?CND12
|
|
?CCL14: INPUT 1
|
|
?CND12: CALL2 CONVERT-KEYS,STACK >CHR
|
|
SET 'NLINE,LINE
|
|
EQUAL? CHR,CLICK1,CLICK2 \?CND15
|
|
CALL2 IN-WINDOW?,SOFT-WINDOW >TMP
|
|
ZERO? TMP /?CND15
|
|
GRTR? TMP,1 \?CND15
|
|
SUB TMP,2 >NLINE
|
|
EQUAL? LINE,NLINE /?CND20
|
|
MUL 2,NLINE
|
|
ADD 2,STACK
|
|
GET FKEYS,STACK
|
|
ZERO? STACK \?CCL24
|
|
SET 'NLINE,LINE
|
|
SOUND S-BEEP
|
|
JUMP ?CND20
|
|
?CCL24: ICALL DISPLAY-SOFT,FKEY,LINE,TRUE-VALUE
|
|
MUL 4,NLINE
|
|
ADD 2,STACK
|
|
ADD FKEYS,STACK
|
|
ICALL DISPLAY-SOFT,STACK,NLINE,FALSE-VALUE
|
|
SET 'LINE,NLINE
|
|
MUL 4,LINE
|
|
ADD 2,STACK
|
|
ADD FKEYS,STACK >FKEY
|
|
GET FKEY,1 >FDEF
|
|
?CND20: EQUAL? CHR,CLICK2 \?CND15
|
|
GET FKEY,0
|
|
LESS? STACK,0 \?CND15
|
|
SET 'CHR,13
|
|
?CND15: EQUAL? CHR,CLICK1,CLICK2 /?CND29
|
|
EQUAL? CHR,13 \?CCL32
|
|
GET FKEY,0
|
|
LESS? STACK,0 \?CCL32
|
|
SET 'NLINE,0
|
|
GET FDEF,1
|
|
CALL STACK
|
|
ZERO? STACK \?REP11
|
|
SUB LINMAX,1 >NLINE
|
|
ICALL2 DISPLAY-SOFTS,LINE
|
|
JUMP ?CND29
|
|
?CCL32: EQUAL? CHR,DOWN-ARROW,13 \?CCL39
|
|
INC 'NLINE
|
|
LESS? NLINE,LINMAX \?CCL42
|
|
MUL 2,NLINE
|
|
ADD 2,STACK
|
|
GET FKEYS,STACK
|
|
ZERO? STACK \?CND29
|
|
INC 'NLINE
|
|
JUMP ?CND29
|
|
?CCL42: SET 'NLINE,0
|
|
JUMP ?CND29
|
|
?CCL39: EQUAL? CHR,UP-ARROW \?CCL46
|
|
DLESS? 'NLINE,0 /?CCL49
|
|
MUL 2,NLINE
|
|
ADD 2,STACK
|
|
GET FKEYS,STACK
|
|
ZERO? STACK \?CND29
|
|
DEC 'NLINE
|
|
JUMP ?CND29
|
|
?CCL49: SUB LINMAX,1 >NLINE
|
|
JUMP ?CND29
|
|
?CCL46: ADD FKEYS,2 >?TMP1
|
|
GET FKEYS,0
|
|
INTBL? CHR,?TMP1,STACK >TMP \?CCL53
|
|
SUB TMP,FKEYS
|
|
DIV STACK,4 >NLINE
|
|
JUMP ?CND29
|
|
?CCL53: GET FKEY,0
|
|
GRTR? STACK,0 \?CCL55
|
|
EQUAL? CHR,8,127 \?CCL58
|
|
GETB FDEF,1 >TMP
|
|
ZERO? TMP /?CCL61
|
|
DEC 'TMP
|
|
PUTB FDEF,1,TMP
|
|
ADD TMP,2
|
|
PUTB FDEF,STACK,32
|
|
ADD LINE,1
|
|
MUL STACK,FONT-Y
|
|
ADD 1,STACK >?TMP1
|
|
ADD TMP,4
|
|
MUL STACK,MONO-X
|
|
ADD 1,STACK
|
|
CURSET ?TMP1,STACK
|
|
ICALL2 XERASE,1
|
|
JUMP ?CND29
|
|
?CCL61: SOUND S-BEEP
|
|
JUMP ?CND29
|
|
?CCL58: LESS? CHR,32 /?CCL63
|
|
LESS? CHR,127 \?CCL63
|
|
GETB FDEF,1 >TMP
|
|
GETB FDEF,0
|
|
EQUAL? TMP,STACK \?CCL68
|
|
SOUND S-BEEP
|
|
JUMP ?CND29
|
|
?CCL68: ADD FDEF,2 >?TMP1
|
|
GETB FDEF,1
|
|
INTBL? 13,?TMP1,STACK,1 >LEFT \?CCL70
|
|
SOUND S-BEEP
|
|
JUMP ?CND29
|
|
?CCL70: EQUAL? CHR,124,33 \?CND71
|
|
SET 'CHR,13
|
|
?CND71: ADD TMP,1
|
|
PUTB FDEF,1,STACK
|
|
LESS? CHR,65 /?CND73
|
|
GRTR? CHR,90 /?CND73
|
|
ADD CHR,32 >CHR
|
|
?CND73: ADD TMP,2
|
|
PUTB FDEF,STACK,CHR
|
|
EQUAL? CHR,13 \?CCL79
|
|
PRINTC 124
|
|
JUMP ?CND29
|
|
?CCL79: PRINTC CHR
|
|
JUMP ?CND29
|
|
?CCL63: SOUND S-BEEP
|
|
JUMP ?CND29
|
|
?CCL55: SOUND S-BEEP
|
|
?CND29: EQUAL? LINE,NLINE /?PRG10
|
|
ICALL DISPLAY-SOFT,FKEY,LINE,TRUE-VALUE
|
|
MUL 4,NLINE
|
|
ADD 2,STACK
|
|
ADD FKEYS,STACK
|
|
ICALL DISPLAY-SOFT,STACK,NLINE,FALSE-VALUE
|
|
SET 'LINE,NLINE
|
|
MUL 4,LINE
|
|
ADD 2,STACK
|
|
ADD FKEYS,STACK >FKEY
|
|
GET FKEY,1 >FDEF
|
|
JUMP ?PRG10
|
|
?REP11: FONT 1
|
|
SCREEN S-TEXT
|
|
CLEAR S-TEXT
|
|
CALL1 V-$REFRESH
|
|
RSTACK
|
|
|
|
|
|
.FUNCT IN-WINDOW?:ANY:1:1,W,X,Y,TOP,LEFT
|
|
GET 0,27
|
|
GET STACK,2 >Y
|
|
GET 0,27
|
|
GET STACK,1 >X
|
|
WINGET W,WTOP >TOP
|
|
LESS? Y,TOP /FALSE
|
|
WINGET W,WLEFT >LEFT
|
|
LESS? X,LEFT /FALSE
|
|
SUB Y,TOP >Y
|
|
SUB X,LEFT >X
|
|
WINGET W,WHIGH
|
|
GRTR? Y,STACK /FALSE
|
|
WINGET W,WWIDE
|
|
GRTR? X,STACK /FALSE
|
|
DIV Y,FONT-Y
|
|
ADD 1,STACK >Y
|
|
RETURN Y
|
|
|
|
|
|
.FUNCT MAX-SOFT-CMD:ANY:0:0,L,FKEY,CNT,TMAX,FDEF
|
|
GET FKEYS,0 >L
|
|
DIV L,2 >L
|
|
ADD FKEYS,2 >FKEY
|
|
?PRG1: LESS? CNT,L /?CTR4
|
|
RETURN TMAX
|
|
?CTR4: GET FKEY,0
|
|
LESS? STACK,0 \?CND6
|
|
GET FKEY,1 >FDEF
|
|
ZERO? FDEF /?CND6
|
|
DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
PRINTI " "
|
|
GET FDEF,0
|
|
PRINT STACK
|
|
PRINTI " "
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24
|
|
GRTR? STACK,TMAX \?CND6
|
|
GET 0,24 >TMAX
|
|
?CND6: ADD FKEY,4 >FKEY
|
|
INC 'CNT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT DISPLAY-SOFTS:ANY:1:1,LINE,L,F,N,FKEY,CNT
|
|
GET FKEYS,0 >L
|
|
DIV L,2 >L
|
|
SCREEN SOFT-WINDOW
|
|
CURSET 1,1
|
|
DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
FONT 1
|
|
PRINTI "Function Keys"
|
|
ICALL1 PRINT-CENTER-TABLE
|
|
FONT 4
|
|
ADD FKEYS,2 >FKEY
|
|
?PRG1: LESS? CNT,L \TRUE
|
|
EQUAL? CNT,LINE \?CCL8
|
|
PUSH FALSE-VALUE
|
|
JUMP ?CND6
|
|
?CCL8: PUSH TRUE-VALUE
|
|
?CND6: ICALL DISPLAY-SOFT,FKEY,CNT,STACK
|
|
ADD FKEY,4 >FKEY
|
|
INC 'CNT
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT DISPLAY-SOFT:ANY:3:3,FKEY,CNT,INV?,FDEF,S,N,M,TMP,Y,X,?TMP1
|
|
GET FKEY,1 >FDEF
|
|
ADD CNT,2 >Y
|
|
GET FKEY,0
|
|
LESS? STACK,0 \?CCL3
|
|
GET FKEY,1
|
|
ZERO? STACK /?CND1
|
|
ICALL CCURSET,Y,1
|
|
ZERO? INV? /?CND6
|
|
ICALL1 INVERSE-COLOR
|
|
?CND6: FONT 1
|
|
DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
GET FDEF,0
|
|
PRINT STACK
|
|
ICALL2 PRINT-CENTER-TABLE,DONE-DEFINE?
|
|
FONT 4
|
|
JUMP ?CND1
|
|
?CCL3: GETB FDEF,0 >S
|
|
GETB FDEF,1 >N
|
|
ICALL CCURSET,Y,1
|
|
GET FKEY,0 >?TMP1
|
|
GET FNAMES,0
|
|
INTBL? ?TMP1,FNAMES+2,STACK >TMP \?CND8
|
|
ZERO? INV? /?CCL12
|
|
ICALL1 NORMAL-COLOR
|
|
JUMP ?CND10
|
|
?CCL12: ICALL1 INVERSE-COLOR
|
|
?CND10: GET TMP,1
|
|
PRINT STACK
|
|
ICALL1 NORMAL-COLOR
|
|
PRINTC 32
|
|
ZERO? INV? /?CCL15
|
|
ICALL1 INVERSE-COLOR
|
|
JUMP ?CND8
|
|
?CCL15: ICALL1 NORMAL-COLOR
|
|
?CND8: ADD FDEF,2 >FDEF
|
|
ZERO? N /?CND16
|
|
SUB N,1 >M
|
|
GETB FDEF,M
|
|
EQUAL? STACK,13 \?CND16
|
|
PRINTT FDEF,M
|
|
PRINTC 124
|
|
ADD FDEF,N >FDEF
|
|
SUB S,N >S
|
|
?CND16: PRINTT FDEF,S
|
|
ICALL2 XERASE,1
|
|
ZERO? INV? \?CND1
|
|
SUB Y,1
|
|
MUL STACK,FONT-Y
|
|
ADD 1,STACK >?TMP1
|
|
ADD N,4
|
|
MUL STACK,MONO-X
|
|
ADD 1,STACK
|
|
CURSET ?TMP1,STACK
|
|
?CND1: CALL1 NORMAL-COLOR
|
|
RSTACK
|
|
|
|
|
|
.FUNCT SOFT-RESET-DEFAULTS:ANY:0:0,K,L,KEYS,DEF,KL,TMP,?TMP1
|
|
GET FKEYS,0 >KL
|
|
SET 'DEF,DEFAULT-FKEYS
|
|
?PRG1: GETB DEF,0 >K
|
|
ZERO? K /FALSE
|
|
INC 'DEF
|
|
GETB DEF,0
|
|
ADD 1,STACK >L
|
|
ADD FKEYS,2
|
|
INTBL? K,STACK,KL >KEYS \?CND5
|
|
GET KEYS,1 >KEYS
|
|
ADD 1,KEYS >TMP
|
|
PUTB TMP,0,32
|
|
ADD 1,TMP >?TMP1
|
|
GETB KEYS,0
|
|
SUB 0,STACK
|
|
COPYT TMP,?TMP1,STACK
|
|
ADD 1,KEYS
|
|
COPYT DEF,STACK,L
|
|
?CND5: ADD DEF,L >DEF
|
|
JUMP ?PRG1
|
|
|
|
|
|
.FUNCT SOFT-SAVE-DEFS:ANY:0:0
|
|
CLEAR S-TEXT
|
|
SCREEN S-TEXT
|
|
SAVE FKEY-TBL,FKEYS-STRTABLE-LEN,DEFS-NAME
|
|
ZERO? STACK \?CND1
|
|
PRINTI "Failed."
|
|
?CND1: CLEAR S-TEXT
|
|
SCREEN SOFT-WINDOW
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SOFT-RESTORE-DEFS:ANY:0:0
|
|
CLEAR S-TEXT
|
|
SCREEN S-TEXT
|
|
RESTORE FKEY-TBL,FKEYS-STRTABLE-LEN,DEFS-NAME
|
|
ZERO? STACK \?CND1
|
|
PRINTI "Failed."
|
|
?CND1: CLEAR S-TEXT
|
|
SCREEN SOFT-WINDOW
|
|
RFALSE
|
|
|
|
|
|
.FUNCT SOFT-EXIT:ANY:0:0
|
|
RTRUE
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|