.xlist ;**************************** ; 'vz.inc' ;**************************** ;DEBUG equ TRUE ;NOSWAP equ TRUE REXP equ TRUE ; VWX support by wing NEWEXPR equ TRUE ; new pointer handler by Sakakibara VZ_RET equ retn IFNDEF PC98 IFNDEF J31 IFNDEF IBMAX IFNDEF US ;i186 equ TRUE ENDIF ;NO2BYTEHAN equ TRUE ENDIF ENDIF ENDIF ;IFDEF SLIM ; N/A from 1.6 ; IFNDEF J31 ; IFNDEF i186 ;i186 equ TRUE ; ENDIF ; ENDIF ;ENDIF ;NEWBLOCK equ TRUE include std.inc .xlist ;**************************** ; Equations ;**************************** ; ;--- Assemble switches --- IFDEF IBMV DOSV equ TRUE ENDIF IFDEF IBMJ DOSV equ TRUE ENDIF IFNDEF PC98 IFNDEF J31 IFNDEF JBM IFNDEF IBM IBM equ TRUE ENDIF ENDIF ENDIF ENDIF IFNDEF PC98 IFNDEF J31 IFNDEF IBMJ IFNDEF JBM MSG_US equ TRUE ENDIF ENDIF ENDIF ENDIF IFNDEF PC98 NO2BYTEHAN equ TRUE ENDIF ;--- Hardware ID --- ID_PC98 equ 00h ID_PC98Hi equ 01h ID_J31 equ 10h ID_IBM equ 20h ID_EGA equ 21h ID_AX equ 02h ID_DOSV equ 04h ID_PS55 equ 28h IDN_PC98 equ 0F0h ;--- Command code --- CM_MAC equ 02 CM_ESC equ 03 CM_CR equ 04 CM_U equ 05 CM_D equ 06 CM_LEDIT equ 07 CM_L equ 07 CM_R equ 08 CM_COMMON equ 09 CM_WL equ 09 CM_WR equ 10 CM_TOUCH equ 14 CM_TAB equ 21 CM_CTRL equ 22 CM_SCOPY equ 24 CM_PUTLINE equ 29 CM_SEDIT equ 30 CM_FILER1 equ 43 CM_SFTCR equ 53 CM_CANCEL equ 54 CM_CHGTEXT equ 63 CM_OPENFILE equ 70 CM_READFILE equ 71 CM_NEWFILE equ 72 CM_APPEND equ 76 CM_RENAME equ 82 CM_SEDITMAX equ 85 CM_FILER equ 88 CM_DOS equ 95 CM_CONS equ 95 CM_ALIAS equ 96 CM_SPREAD equ 97 CM_TOFILER equ 98 CMCNT equ 100 CM_FILER3 equ 101 CM_FILER4 equ 122 ;----- Event types ----- EV_ABORT equ 1 EV_START equ 2 EV_OPEN equ 3 EV_CLOSE equ 4 EV_EDIT equ 5 EV_VIEW equ 6 EV_TIMER equ 7 EV_FILER equ 8 EVENTCNT equ 8 ;--- Messages --- E_PATH equ 1 E_READ equ 2 E_WRITE equ 3 E_TEMP equ 4 E_NOLINE equ 5 E_OPEN equ 6 E_NODISK equ 7 E_NOTEXT equ 8 E_NOSTACK equ 9 E_NOMEM equ 10 E_NOBUFFER equ 11 E_EXEC equ 12 E_RECUST equ 13 M_QSAVE equ 14 M_SAVING equ 15 M_QSAVEM equ 16 M_QCLRSTK equ 17 M_QQUIT equ 18 M_XFOUND equ 19 M_QCHGALL equ 20 M_QRPLONE equ 21 M_RPLTOTAL equ 22 M_MOVE equ 23 M_COMPOK equ 24 M_COMPNG equ 25 M_XKAKO equ 26 M_OPENED equ 27 M_MARK equ 28 M_RECUST equ 29 M_EXIST equ 30 M_PATHERR equ 31 M_RDONLY equ 32 M_NEW equ 33 M_XSAVE equ 34 M_XAPPEND equ 35 M_NOTCHG equ 36 M_ABANDON equ 37 M_DELETE equ 38 ;--- Text windows --- W_READ equ 1 W_WRITE equ 2 W_NEW equ 3 W_APPEND equ 4 W_PATH equ 5 W_FIND equ 6 W_REPLACE equ 7 W_COPY equ 8 W_LINE equ 9 W_RENAME equ 10 W_FINDTTL equ 11 W_RENFILE equ 12 W_MKDIR equ 13 W_DOSBOX equ 14 W_CMDBOX equ 15 W_DSTBOX equ 16 ;--- System mode --- SYS_SEDIT equ 0 SYS_GETS equ 1 SYS_DOS equ 2 SYS_FILER equ 3 SYS_GETC equ 4 ;--- Parse path result --- VZ_PRS_WILD equ 00000001b VZ_PRS_EXT equ 00000010b VZ_PRS_NAME equ 00000100b VZ_PRS_DIR equ 00001000b VZ_PRS_DRV equ 00010000b VZ_PRS_ROOT equ 00100000b VZ_PRS_ENDDIR equ 10000000b ;--- Char attribute --- ATR_TXT equ 0 ATR_CTR equ 1 ATR_NUM equ 2 ATR_BLK equ 3 ATR_STT equ 4 ATR_STT2 equ 5 ATR_STTR equ 6 ATR_MSG equ 7 ATR_WFRM equ 8 ATR_WTTL equ 9 ATR_WTXT equ 10 ATR_W1ST equ 11 ATR_WSEL equ 12 ATR_HELP equ 13 ATR_KEY equ 14 ATR_GRD equ 15 ATR_BCSR equ 16 ATR_FKEY equ 17 ATR_DOS equ 18 ATR_CTR2 equ 19 ATR_PATH equ 20 ;--- Graphic char type --- GRC equ 0F0h GRC_H equ GRC+0 GRC_V equ GRC+1 GRC_TL equ GRC+2 GRC_TR equ GRC+3 GRC_BL equ GRC+4 GRC_BR equ GRC+5 GRC_VL equ GRC+6 GRC_VR equ GRC+7 GRC_TAB equ GRC+8 GRC_CR equ GRC+9 GRC_EOF equ GRC+10 ;----- Control char attribute ----- CA_CTRL equ 00000001b CA_CR equ 00000010b CA_TAB equ 00000100b CA_EOF equ 00001000b CA_RMGN equ 00010000b CA_ZENSPC equ 00100000b CA_XZEN equ 01000000b ;--- Display switch --- DSP_LINE equ 00000001b DSP_CR equ 00000010b DSP_TAB equ 00000100b DSP_EOF equ 00001000b DSP_RMGN equ 00010000b ; ##16 DSP_ZENSPC equ 00100000b ; ##16 DSP_NUM equ 01000000b DSP_SYS equ 10000000b DSP_BSLASH equ 0000000100000000b DSP_UNDER equ 0000001000000000b DSP_FULPATH equ 0000010000000000b DSP_PATHCASE equ 0000100000000000b DSP_IBMGRPH equ 0001000000000000b DSP_98JIS83 equ 0001000000000000b ; ##156.106 DSP_DOSVFLICK equ 0001000000000000b ; ##156.131 DSP_STLHEAD equ 0010000000000000b ; ##156.99 DSP_SMOOTH equ 0100000000000000b ; ##16 ;--- Edit switch --- EDT_INDENT equ 00000001b EDT_SCROLL equ 00000010b EDT_EOF equ 00000100b EDT_BACKUP equ 00001000b EDT_UNTAB equ 00010000b EDT_PASTE equ 00100000b EDT_PGTTL equ 01000000b EDT_PGHALF equ 10000000b EDT_WRDSCH equ 0000000100000000b EDT_ICASE equ 0000001000000000b EDT_NOSTK equ 0000010000000000b EDT_LOGMOVE equ 0000100000000000b EDT_VIEW equ 0001000000000000b EDT_AUTOWD equ 0010000000000000b EDT_CUTSPC equ 0100000000000000b EDT_INDENTZEN equ 1000000000000000b ; ##153.33 ;--- System switch --- SW_CON equ 00000010b SW_SKIPESC equ 00000100b SW_REDRAW equ 00001000b SW_CLRSTACK equ 00010000b SW_CLMOVW equ 00100000b ; Eo ##16 SW_YES equ 01000000b SW_REVYN equ 10000000b ; YN ##16 SW_ASKNEW equ 0000000100000000b SW_QUIT equ 0000001000000000b SW_FP equ 0000010000000000b SW_BEEP equ 0000100000000000b SW_RO equ 0001000000000000b SW_INIOPT equ 0010000000000000b ; Sz ##16 ;SW_VIEWRET equ 0100000000000000b ; Sv ##16 ;--- Extended switch --- ESW_ESCKEY equ 00000001b ESW_EZKEY equ 00000010b ; ##153.30 ESW_FPQUIT equ 00000100b ; ##156.109 ESW_TRUSH equ 00001000b ; ux ESW_MAC equ 00010000b ; mx ESW_VWX equ 00100000b ; + ESW_IZENHAN equ 01000000b ; + VWX ESW_REXP equ 10000000b ; + ESW_FKEY equ 0000000100000000b ESW_DEFTTL equ 0000001000000000b ;--- Command flag --- CMF_TCH equ 00000001b CMF_VMOVE equ 00000010b CMF_VPOS equ 00000100b CMF_REMAP equ 00001000b CMF_VAL equ 10000000b ;----- DOS Command exec switch ----- VZ_DOS_TBOX equ 0001b VZ_DOS_GO equ 0010b VZ_DOS_RETURN equ 0100b VZ_DOS_BOXTTL equ 1000b ;--- Macro extra char --- MCHR_MENU equ 1 MCHR_CMD equ 2 MCHR_VAR equ 3 MCHR_CALL equ 4 MCHR_REM equ 5 MCHR_LABEL equ 6 MCHR_JUMP equ 7 MCHR_IF equ 8 MCHR_RET equ 9 MCHR_END equ 10 MCHR_CHR equ 11 MCHR_STR equ 12 ;--- Block mode --- BLK_LINE equ 1 BLK_CHAR equ 2 BLK_RECT equ 4 ;----- Paging mode ----- PG_SCRN equ 0 PG_TTLSCH equ 1 PG_STRSCH equ 2 ;--- Cursor type --- CSR_INS equ 0 CSR_OVR equ 1 CSR_SYS equ 4 CSR_OFF equ -1 ;--- Get string mode --- GETS_INIT equ 0 GETS_COPY equ 1 GETS_DOS equ 4 GETS_DOSC equ 5 GETS_DOSBOX equ 8 ;--- System menu --- MNU_HELP equ 0 MNU_MACRO equ 1 MNU_ALIAS equ 2 MNU_TEXT equ 3 MNU_RPLMODE equ 4 MNU_FMASK equ 5 MNU_FSORT equ 6 MNU_FCOMP equ 7 MNU_FEXEC equ 8 MNU_FQUICK equ 9 MNU_MODULE equ 10 MNU_VZPATH equ 11 MNU_FATTR equ 12 MNU_FFILE equ 13 MENU_MODULE equ 97 MENU_MDLMAC equ 98 MENU_MACRO equ 99 MENUMASK equ 11100000b IFDEF NEWEXPR MENU_VAR equ 10000000b ENDIF ;--- Split mode --- SPLIT_A equ 0 SPLIT_H equ 2 SPLIT_U equ SPLIT_H SPLIT_D equ SPLIT_H+1 SPLIT_V equ 4 SPLIT_L equ SPLIT_V SPLIT_R equ SPLIT_V+1 ;--- FEP controle code --- FEP_ON equ 0 FEP_OFF equ 1 FEP_ACT equ 2 FEP_MASK equ 3 ;--- Text modify mode --- TCH_MOD equ 1 TCH_RO equ -1 TCH_VIEW equ 80h ;--- Large file mode --- ; ##16 FL_HEAD equ 00000001b FL_TAIL equ 00000010b FL_HEADX equ 00000100b FL_TAILX equ 00001000b FL_READEND equ 00010000b FL_RENAME equ 00100000b FL_LOG equ 01000000b FL_BINARY equ 10000000b ;----- Module macro ----- MDL_SLEEP equ 00000001b MDL_REMOVE equ 00000010b MDL_EXT equ 00000100b MDL_KEYMAC equ 10000000b MDL_HEADER equ 0FFh ;----- Profile option ----- PRO_WRITE equ 0000001b PRO_CREATE equ 0000010b PRO_CLOSE equ 0000100b PRO_AUTO equ 0001000b PRO_LOGCLOSE equ 0010000b PRO_CMDHIST equ 0100000b PRO_NOHIST equ 1000000b ;--- Miscellaneous --- NULLCODE equ 0FFh WD equ 80 HIGHT equ 25 STRSZ equ 128 TTLSTRSZ equ 64 TMPSZ equ 256 PATHSZ equ 64 MASKSZ equ 32 VZ_BACKSLASH equ 0FCh SYMCHR equ 27h MARKCNT equ 4 ONEMS equ 0FFFh MIN_TBSIZE equ 0400h PACKSZ equ 13 TEXTTOP equ 2 TMPSLOTCNT equ 512 BMPSIZE equ 128 VZ_DOSLEN equ 128 PAGEMAX equ BMPSIZE*8 EMSMASK equ 0F0h EMSMASKW equ 0F000h TMAXMGN equ 0FFFDh ;**************************** ; Segment definitions ;**************************** _work segment word public 'WORK' _work ends _data segment word public 'DATA' _data ends _base segment word public 'BASE' _base ends _code segment byte public 'CODE' _code ends _exec segment byte public 'EXEC' _exec ends _hard segment byte public 'HARD' _hard ends _init segment word public 'INIT' _init ends _tail segment word public 'TAIL' _tail ends cgroup group _work,_data,_base,_code,_exec,_hard,_init,_tail wseg macro _work segment endm endws macro _work ends endm dseg macro _data segment endm endds macro _data ends endm bseg macro _base segment endm endbs macro _base ends endm cseg macro _code segment endm endcs macro _code ends endm eseg macro _exec segment endm endes macro _exec ends endm hseg macro _hard segment endm endhs macro _hard ends endm iseg macro _init segment endm endis macro _init ends endm ;**************************** ; Macro definitions ;**************************** GDATA macro sym,def,val1 public sym sym def val1 endm tstl macro var mov ax,word ptr var or ax,word ptr var+2 endm clrl macro var mov word ptr var,0 mov word ptr var+2,0 endm ldl macro var mov ax,word ptr var mov dx,word ptr var+2 endm stl macro var mov word ptr var,ax mov word ptr var+2,dx endm addl macro var add ax,word ptr var adc dx,word ptr var+2 endm subl macro var sub ax,word ptr var sbb dx,word ptr var+2 endm cmpl macro var local cmpl1 cmp dx,word ptr var+2 jne cmpl1 cmp ax,word ptr var cmpl1: endm cmphl macro reg_h,reg_l local cmphl1 cmp dx,reg_h jne cmphl1 cmp ax,reg_l cmphl1: endm addlw macro var,reg add word ptr var,reg adc word ptr var+2,0 endm sublw macro var,reg sub word ptr var,reg sbb word ptr var+2,0 endm IFDEF DEBUG IFDEF PC98 beep macro pushf pushm outi 37h,06h mov cx,1000h loop $ outi 37h,07h popm popf endm beepon macro push ax outi 37h,6 pop ax endm beepoff macro push ax outi 37h,7 pop ax endm ELSE beep macro push ax mov ax,0E07h int 10h pop ax endm ENDIF ENDIF ofs macro label dw offset cgroup:label endm ;**************************** ; Structure definitions ;**************************** ;--- Memory control block --- _mcb struc mcb_id db ? mcb_psp dw ? mcb_size dw ? _mcb ends ;--- Screen record --- _point struc x db ? y db ? _point ends _rect struc px db ? py db ? sx db ? sy db ? _rect ends ;--- Menu record --- _menu struc mn_wd db ? mn_c db ? mn_valwd db ? mn_sel db ? ; if -1, no cursor mn_ext dw ? ; extern function ptr _menu ends ;--- Menu bar record --- _mbar struc mb_px db ? mb_py db ? mb_sx db ? mb_c db ? mb_ttl dw ? _mbar ends ;--- Directoy record --- _dir struc dr_attr db ? dr_time dw ? dr_date dw ? dr_size dd ? dr_pack db 13 dup(?) _dir ends ;--- DTA record --- _dta struc db 15h dup(?) dta_attr db ? dta_time dw ? dta_date dw ? dta_size dd ? dta_pack db PACKSZ dup(?) _dta ends ;--- Filer window record --- _filer struc fl_back dw ? fl_pooltop dw ? fl_seg dw ? fl_poolend dw ? fl_poolp dw ? fl_selcnt dw ? fl_bcsr dw ? fl_files dw ? fl_home dw ? fl_wpx db ? fl_wpy db ? fl_wsx db ? fl_wsy db ? fl_tsy dw ? fl_ttlsx db ? fl_which db ? fl_free dd ? fl_clust dw ? fl_overflow db ? fl_curf db ? fl_path db PATHSZ dup(?) fl_mask db MASKSZ dup(?) fl_lastpath db PATHSZ dup(?) _filer ends ;--- FEP descriptor --- _fep struc fp_int db ? ; INT No. fp_idoff dw ? ; check offset fp_absoff db ? ; 0=vector rel, 1=absolute fp_id dw ? ; check word _fep ends ;----- Log file table ----- _logtbl struc lg_lnumb dw ? lg_nowp dd ? lg_eofp dd ? lg_lf db ? _logtbl ends ;----- Module Header ----- _mdlhead struc mh_num db 0FFh ; Dummy No.(=Menu #31) mh_size dw ? ; Header size mh_flag db ? ; mh_nextmdl dw ? ; Next module header ptr mh_namelen dw ? ; module name length _mdlhead ends ;--- Text record --- _text struc w_next dw ? ; next record link ptr wnum db ? ; window number tchf db ? ; touch flag (0=nop,1=modified,-1=RO) wsplit db ? ; window split mode blkm db ? ; block mode (1=line,2=char) wy db ? ; y loc. in screen wnxt db ? ; next line y loc. in screen wys db ? ; wy keeper nodnumb db ? ; disp number flag lnumb dw ? ; line number dnumb dw ? ; disp number lnumb0 dw ? ; line number offset dnumb0 dw ? ; disp number offset ttops dw ? ; text area top seg tends dw ? ; text area end seg or EMS entry ttop dw ? ; text top ptr tend dw ? ; text end ptr tmax dw ? ; text buffer end ptr thom dw ? ; screen home ptr tbtm dw ? ; screen bottom ptr tnow dw ? ; current line ptr tnxt dw ? ; next line ptr btop dw ? ; line buffer top ptr bend dw ? ; line end ptr tcp dw ? ; current ptr (common) tfld dw ? ; field start ptr (common) bmax dw ? ; line buffer end ptr bhom dw ? ; screen home ptr (in buffer) bbtm dw ? ; screen bottom ptr (in buffer) lbseg dw ? ; line buffer seg inbuf db ? ; tw_px db ? ;+ text window tw_py db ? ;+ tw_sx db ? ;+ tw_sy db ? ;+ tw_cy db ? ;+ fsiz db ? ; field size fskp db ? ; display skip x fofs db ? ; H-scroll offset x lxs db ? ; lx keeper lx db ? ; x loc. in field ly db ? ; y loc. in line tabr db ? ; Tab size exttyp db ? ; file ext type ctype db ? ; current char type ckanj db ? ; 1=kanji ccode dw ? ; current char code namep dw ? ; file name ptr largf db ? ; large text flag temp db ? ; temporary file flag readp dd ? ; text read long ptr eofp dd ? ; EOF lptr headp dd ? ; head lptr headsz dw ? ; head size tailp dd ? ; tail lptr tailsz dw ? ; tail size textid dw ? ; text ID No. w1 dw ? ; work 1 w2 dw ? ; work 2 w3 dw ? ; work 3 bofs dw ? ; block mark offset in line blkx db ? ; block mark x loc. fsiz0 db ? ; save of fsiz tbmax dw ? ; size of text buffer ##1.5 tbalt dw ? ; size of temp. block ##1.5 tblkp dd ? ; block lptr tnowp dd ? ; current lptr trgtp dd ? ; target lptr toldp dd ? ; old current lptr tretp dd ? ; return lptr tmark dd MARKCNT dup(?) ; mark lptr path db PATHSZ dup (?) ; path name area tsstr dw ? ; title search string ptr blktgt dw ? ; block target flag inpcnt dw ? ; input counter ektbl dw ? ; event key table ptr extword dw ? ; file ext word labelp dw ? ; label name ptr lnumb9 dw ? ; last line number dspsw1 db ? ; alternate dspsw atrtxt1 db ? atrstt1 db ? atrpath1 db ? _text ends ;**************************** ; End of 'vz.inc' ; Copyright (C) 1989 by c.mos ;**************************** .list assume cs:cgroup, ss:cgroup