Assembler language macro system
msystem.zip
411KB.
Macro system
Brief description of the main files in the archive.
The macro system itself:
MSYSTEM.MAC
This file contains the actual macro system.
MMACROS.MAC
This file contains additional useful macro definitions.
MBIOS.MAC
This file contains macro definitions for the IBM-PC BIOS.
MDOS.MAC
This file contains macro definitions for IBM-PC DOS.
CONIO.MAC
DIR.MAC
ERROR.MAC
FLOAT.MAC
IO.MAC
KBD.MAC
MATH.MAC
MBIOS.MAC
MEM.MAC
MOUSE.MAC
STOV.MAC
STRING.MAC
SYS.MAC
The macro system itself:
CHOISE.M
CLOCK.M
CODER.M
COLOR.M
CURSOR.M
DBEDIT.M
INIT.M
KEY.M
MENU.M
MKEYS.M
READ.M
REC.M
SAY.M
SCROLL.M
SORT.M
SOUND.M
WINDOW.M
DOCUMENTATION:
MSYSTEM.DOC
This is a documentation file for the macro system.
EXTA.DOC
MMACROS.DOC
MMEM.DOC
OGLAV.DOC
READ.DOC
TITLE.DOC
*.ASM files These files contain
For installation on the system
Remember that assembler errors
Whatever your approach -
The Assembler itself can be downloaded here
tasm25.zip
- 175 KB.
For example, here is a simple code
;
;
.MODEL SMALL
include msystem.mac
include sys.mac
include conio.mac
include mouse.mac
include mem.mac
include kbd.mac
include math.mac
include cursor.m
include window.m
include color.m
include rec.m
include dbedit.m
include say.m
include read.m
include key.m
include mkeys.m
include mb.m
size_com = 20000+256
len_stack= 20000
len_vars = 20000
.CODE
BEGIN START,100h,_main,{
func mb_empty,,
mov SI, buf_A
memfill <32,@ DEBET_NAME,LEN_NAME>
memfill < 0,@ DEBET_QUAN,LEN_QUAN>
memfill <32,@ KREDIT_NAME,LEN_NAME>
memfill < 0,@ KREDIT_QUAN,LEN_QUAN>
endf
func _pic,,,1,public
old_color EQU [BP]-1
getcolor ,
mov SI, buf_A
setcolor
sayxy
setcolor
say <@DEBET_NAME,@f_name>
setcolor
say <@ space,@ f_s>
setcolor
say <@ DEBET_QUAN,@ f_quan>
setcolor
say <@ space,@ f_s>
setcolor
say <@ space,@ f_s>
setcolor
say <@ KREDIT_NAME,@ f_name>
setcolor
say <@ space,@ f_s>
setcolor
say <@ KREDIT_QUAN,@ f_quan>
setcolor
say <@ space,@ f_s>
setcolor
endf
func _fuser,,,1,public
old_color EQU [BP]-1
mov DI, 1
mov AL, cs:mode
switch AL,<0,1>
case 1 { ;
getcolor ,
setcolor
reccount <@ rec_A>,
sayxy <35, 2,@ ii,@ f_w4>
recrecno <@ rec_A>,
sayxy <41, 2,@ ii,@ f_w4>
setcolor
case 2 {
mov retr_cho, TRUE
while {
mov retr_cho, FALSE
mkeys_to
mov AL, cs:key_AL
switch AL, {
case 1 {
mov AH, cs:key_AH
switch AH,
case 1 ;
Inserting ,
case 2 ;
Deleting ,
case 3 ;
Sorting ,
case 4 ;
case 5 ;
Dating,
case 6 ;
menupull
mov DI, 3
endcase
case 2 { ;
case 3 ;
Inputing ,
case 4 ;
mov done, FALSE
movDI,0
endcase
endwh}
endcase
endf
label1 db 'COMING',0
label2 db 'CONSUMPTION',0
title1 db ' Name Quantity
ukeys1 db 1Eh,0
ukeys2 db 1Fh,0
skeys1 db 'ENTER',0
nkeys1 db 'ENTER',0
skeys2 db 'INS',0
nkeys2 db 'NEW',0
skeys3 db 'DEL',0
nkeys3 db 'DELETE',0
skeys4 db 'F5',0
nkeys4 db 'PRINT',0
skeys5 db 'F6',0
nkeys5 db 'ORDER',0
skeys6 db 'F7',0
nkeys6 db 'SEARCH',0
skeys7 db 'F8',0
nkeys7 db 'SUM',0
skeys8 db 'F10',0
nkeys8 db 'MENU',0
skeys9 db 'ESC',0
nkeys9 db 'QUIT',0
;--- Head procedure
func main
;
cli
mov SP, size_com+len_stack
sti
;
farrelease <*CS 00.00 size_com+len_stack+len_vars>
initcon
release <* size_com+len_stack,0>
initsys
initmouse
cursor_off
;
setcolor <<>>
drawbox
drawbox < 0, 2.79, 2,@ box_main>
mouse_on
setcolor
sayxy <16, 0,@ label1,@ f_s>
sayxy <56, 0,@ label2,@ f_s>
setcolor
sayxy <0, 1,@ title1,@ f_s>
setcolor
say <@ title1,@ f_s>
setcolor <<>>
;
color
mkeys_on
mkeys_fr <79, 0,PGUPKEY*100h,@ ukeys1,@ snull>
mkeys_fr <79,24,PGDNKEY*100h,@ ukeys2,@ snull>
mkeys_fr < 4,24,CRKEY,@ skeys1,@ nkeys1>
mkeys_fr <14,24,INSKEY*100h,@ skeys2,@ nkeys2>
mkeys_fr <22,24,DELRKEY*100h,@ skeys3,@ nkeys3>
mkeys_fr <30,24,F5KEY*100h,@ skeys4,@ nkeys4>
mkeys_fr <37,24,F6KEY*100h,@ skeys5,@ nkeys5>
mkeys_fr <44,24,F7KEY*100h,@ skeys6,@ nkeys6>
mkeys_fr <51,24,F8KEY*100h,@ skeys7,@ nkeys7>
mkeys_fr <58,24,F10KEY*100h,@ skeys8,@ nkeys8>
mkeys_fr <65,24,ESCKEY,@ skeys9,@ nkeys9>
mkeys_on
;
recopen <@ rec_A,@ file_A,len_A>
getmem , ;recbuffer
recempty <@ rec_A,@ _mb_empty>
;
color
mov done, TRUE
while
dbedit <@ rec_A, 0, 3,79,23,@ cs:__pic,@ cs:__fuser>
endwh
;
freemem<*buf_A>
recclose <@ rec_A>
;
mkeys_of
;
mouse_off
cursor_on
;
clrscr
halt <0>
endf
END START