246 lines
4.8 KiB
Plaintext
246 lines
4.8 KiB
Plaintext
|
|
.SEGMENT "0"
|
|
|
|
|
|
.FUNCT GET-FROM-MENU:ANY:3:4,MSG,MENU,FCN,DEF,YFULL,Y,TMP,N,WHICH,L,WID,CNT,LL,?TMP1,?TMP2
|
|
ASSIGNED? 'DEF /?CND1
|
|
SET 'DEF,1
|
|
?CND1: GET MENU,0 >L
|
|
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CCL4
|
|
EQUAL? MACHINE,AMIGA \?CND3
|
|
?CCL4: INC 'L
|
|
?CND3: WINGET S-TEXT,WCRCNT >Y
|
|
ZERO? Y /?CND7
|
|
ICALL2 N-CRLF,Y
|
|
ICALL1 RESET-MARGIN
|
|
?CND7: WINGET 0,WHIGH
|
|
DIV STACK,FONT-Y >TMP
|
|
WINGET 0,WLCNT
|
|
SUB TMP,STACK
|
|
GRTR? L,STACK \?CND9
|
|
WINPUT 0,WLCNT,TMP
|
|
?CND9: GET MENU,0 >LL
|
|
?PRG11: IGRTR? 'CNT,LL \?CCL15
|
|
INC 'WID
|
|
SET 'RESTORED?,TRUE-VALUE
|
|
?PRG18: ZERO? RESTORED? /?CND20
|
|
MUL L,FONT-Y
|
|
ICALL2 MAKE-ROOM-FOR,STACK
|
|
WINGET 0,WYPOS >Y
|
|
WINGET 0,WTOP
|
|
ADD STACK,Y
|
|
ADD STACK,-1 >YFULL
|
|
?CND20: CURSET Y,1
|
|
WINGET 0,WLEFT >?TMP2
|
|
MUL L,FONT-Y >?TMP1
|
|
WINGET 0,WWIDE
|
|
ICALL WINDEF,MENU-WINDOW,YFULL,?TMP2,?TMP1,STACK
|
|
SCREEN MENU-WINDOW
|
|
EQUAL? MACHINE,AMIGA /?CND22
|
|
WINGET S-TEXT,WCOLOR >LL
|
|
BAND LL,255 >?TMP1
|
|
SHIFT LL,-8
|
|
COLOR ?TMP1,STACK
|
|
?CND22: CLEAR MENU-WINDOW
|
|
SCREEN S-TEXT
|
|
PRINT MSG
|
|
EQUAL? MACHINE,APPLE-2E,APPLE-2C,APPLE-2GS /?CTR25
|
|
EQUAL? MACHINE,AMIGA \?CCL26
|
|
?CTR25: SET 'LL,FONT-Y
|
|
CRLF
|
|
JUMP ?CND24
|
|
?CCL15: DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
GET MENU,CNT
|
|
ICALL2 PRINT-TABLE,STACK
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24 >TMP
|
|
GRTR? TMP,WID \?PRG11
|
|
SET 'WID,TMP
|
|
JUMP ?PRG11
|
|
?CCL26: SET 'LL,0
|
|
?CND24: ADD YFULL,LL
|
|
CALL MENU-SELECT,MENU,STACK,WID,DEF >WHICH
|
|
LESS? WHICH,0 \?CCL31
|
|
RETURN WHICH
|
|
?CCL31: GET 0,8
|
|
BTST STACK,1 \?CND29
|
|
DIROUT D-SCREEN-OFF
|
|
PRINTC 32
|
|
GET MENU,WHICH
|
|
ICALL2 PRINT-TABLE,STACK
|
|
CRLF
|
|
CRLF
|
|
DIROUT D-SCREEN-ON
|
|
?CND29: CRLF
|
|
SET 'RESTORED?,FALSE-VALUE
|
|
CALL FCN,WHICH,MENU >LL
|
|
ZERO? LL /?PRG18
|
|
RETURN LL
|
|
|
|
|
|
.FUNCT MENU-SELECT:ANY:3:4,M,Y,WID,S,X,CNT,CHR,?PR-Y,OS,OICNT,ITEM,TMP,?TMP1
|
|
ASSIGNED? 'S /?CND1
|
|
SET 'S,1
|
|
?CND1: GET M,0 >CNT
|
|
GET 0,17
|
|
SUB STACK,WID
|
|
DIV STACK,2 >X
|
|
MUL CNT,FONT-Y
|
|
ICALL WINDEF,MENU-WINDOW,Y,X,STACK,WID
|
|
SCREEN MENU-WINDOW
|
|
EQUAL? MACHINE,AMIGA /?CND3
|
|
WINGET S-TEXT,WCOLOR >CHR
|
|
BAND CHR,255 >?TMP1
|
|
SHIFT CHR,-8
|
|
COLOR ?TMP1,STACK
|
|
?CND3: CLEAR MENU-WINDOW
|
|
ICALL1 CURSOR-OFF
|
|
?PRG5: IGRTR? '?PR-Y,CNT /?REP6
|
|
ICALL CCURSET,?PR-Y,1
|
|
EQUAL? ?PR-Y,S \?CND10
|
|
HLIGHT H-INVERSE
|
|
?CND10: GET M,?PR-Y
|
|
ICALL2 PRINT-TABLE,STACK
|
|
EQUAL? ?PR-Y,S \?PRG5
|
|
HLIGHT H-NORMAL
|
|
JUMP ?PRG5
|
|
?REP6: ICALL CCURSET,S,1
|
|
SET '?PR-Y,0
|
|
GET M,S >ITEM
|
|
?PRG14: ZERO? DEMO-VERSION? /?CCL18
|
|
CALL2 INPUT-DEMO,1
|
|
JUMP ?CND16
|
|
?CCL18: INPUT 1
|
|
?CND16: CALL2 CONVERT-KEYS,STACK
|
|
CALL2 LC,STACK >CHR
|
|
SET 'OS,S
|
|
SET 'OICNT,?PR-Y
|
|
EQUAL? CHR,CLICK1,CLICK2 \?CCL21
|
|
CALL2 IN-WINDOW?,SOFT-WINDOW >TMP
|
|
ZERO? TMP /?CCL21
|
|
SET 'S,TMP
|
|
EQUAL? OS,S /?CND24
|
|
ICALL CCURSET,OS,1
|
|
GET M,OS
|
|
ICALL2 PRINT-TABLE,STACK
|
|
ICALL CCURSET,S,1
|
|
HLIGHT H-INVERSE
|
|
GET M,S >ITEM
|
|
ICALL2 PRINT-TABLE,ITEM
|
|
HLIGHT H-NORMAL
|
|
CALL2 L-PIXELS,S >?TMP1
|
|
CALL STRWIDTH,ITEM,?PR-Y
|
|
ADD STACK,1
|
|
CURSET ?TMP1,STACK
|
|
?CND24: EQUAL? CHR,CLICK2 \?CCL28
|
|
CLEAR MENU-WINDOW
|
|
ICALL1 CURSOR-ON
|
|
SCREEN S-TEXT
|
|
RETURN S
|
|
?CCL28: SET 'OS,S
|
|
JUMP ?CND19
|
|
?CCL21: EQUAL? CHR,8,127 \?CCL30
|
|
GRTR? ?PR-Y,0 \?CCL30
|
|
DEC '?PR-Y
|
|
JUMP ?CND19
|
|
?CCL30: EQUAL? CHR,UP-ARROW,LEFT-ARROW,DOWN-ARROW /?CTR33
|
|
EQUAL? CHR,RIGHT-ARROW,32 \?CCL34
|
|
?CTR33: SET 'ITEM,FALSE-VALUE
|
|
SET '?PR-Y,FALSE-VALUE
|
|
EQUAL? CHR,UP-ARROW,LEFT-ARROW \?CCL39
|
|
GRTR? S,1 \?CCL42
|
|
DEC 'S
|
|
JUMP ?CND19
|
|
?CCL42: SET 'S,CNT
|
|
JUMP ?CND19
|
|
?CCL39: LESS? S,CNT \?CCL45
|
|
INC 'S
|
|
JUMP ?CND19
|
|
?CCL45: SET 'S,1
|
|
JUMP ?CND19
|
|
?CCL34: EQUAL? CHR,13 \?CCL47
|
|
CLEAR MENU-WINDOW
|
|
ICALL1 CURSOR-ON
|
|
SCREEN S-TEXT
|
|
RETURN S
|
|
?CCL47: GETB ITEM,0
|
|
LESS? ?PR-Y,STACK \?CCL49
|
|
ADD ?PR-Y,1
|
|
GETB ITEM,STACK
|
|
CALL2 LC,STACK
|
|
EQUAL? CHR,STACK \?CCL49
|
|
INC '?PR-Y
|
|
JUMP ?CND19
|
|
?CCL49: CALL FIND-ITEM,ITEM,CHR,?PR-Y,M >TMP
|
|
ZERO? TMP /?CCL53
|
|
SET 'S,TMP
|
|
INC '?PR-Y
|
|
JUMP ?CND19
|
|
?CCL53: SOUND S-BEEP
|
|
?CND19: GET M,S >ITEM
|
|
EQUAL? S,OS \?CCL55
|
|
EQUAL? ?PR-Y,OICNT /?PRG14
|
|
?CCL55: EQUAL? S,OS /?CND58
|
|
ICALL CCURSET,OS,1
|
|
GET M,OS
|
|
ICALL2 PRINT-TABLE,STACK
|
|
ICALL CCURSET,S,1
|
|
HLIGHT H-INVERSE
|
|
ICALL2 PRINT-TABLE,ITEM
|
|
HLIGHT H-NORMAL
|
|
?CND58: CALL2 L-PIXELS,S >?TMP1
|
|
CALL STRWIDTH,ITEM,?PR-Y
|
|
ADD STACK,1
|
|
CURSET ?TMP1,STACK
|
|
JUMP ?PRG14
|
|
|
|
|
|
.FUNCT PRINT-TABLE:ANY:1:2,TBL,L
|
|
ASSIGNED? 'L /?CND1
|
|
GETB TBL,0 >L
|
|
?CND1: ADD 1,TBL
|
|
PRINTT STACK,L
|
|
RTRUE
|
|
|
|
|
|
.FUNCT STRWIDTH:ANY:2:2,ITEM,ICNT
|
|
GRTR? ICNT,1 \FALSE
|
|
DIROUT D-TABLE-ON,DIROUT-TABLE
|
|
ICALL PRINT-TABLE,ITEM,ICNT
|
|
DIROUT D-TABLE-OFF
|
|
GET 0,24
|
|
RSTACK
|
|
|
|
|
|
.FUNCT LC:ANY:1:1,CHR
|
|
LESS? CHR,65 /?CCL3
|
|
GRTR? CHR,90 /?CCL3
|
|
ADD CHR,32
|
|
RSTACK
|
|
?CCL3: RETURN CHR
|
|
|
|
|
|
.FUNCT FIND-ITEM:ANY:4:4,ITEM,CHR,ICNT,MENU,S,NITEM,CCNT,C1,C2
|
|
?PRG1: GET MENU,0
|
|
IGRTR? 'S,STACK /FALSE
|
|
GET MENU,S >NITEM
|
|
GETB NITEM,0
|
|
LESS? ICNT,STACK \?PRG1
|
|
ADD ICNT,1
|
|
GETB NITEM,STACK
|
|
CALL2 LC,STACK
|
|
EQUAL? CHR,STACK \?PRG1
|
|
SET 'CCNT,0
|
|
?PRG9: IGRTR? 'CCNT,ICNT \?CND11
|
|
RETURN S
|
|
?CND11: GETB NITEM,CCNT
|
|
CALL2 LC,STACK >C1
|
|
GETB ITEM,CCNT
|
|
CALL2 LC,STACK >C2
|
|
EQUAL? C1,C2 /?PRG9
|
|
JUMP ?PRG1
|
|
|
|
.ENDSEG
|
|
|
|
.ENDI
|