Assembler Macro System
msystem.zip 411KB.
Macro system
allows you to write programs in
familiar language syntax
high level and does
program texts more
transparent to read and
perception. System
designed for compilers with
assembly language TASM-2.5 and MASM-5.0.
Represents
structured language
high level that can
use to write
programs of any size and
any purpose. Calculated
for a programmer who already has
language programming experience
assembler.
Brief description of the main files in the archive.
The system of macros itself:
MSYSTEM.MAC This file contains the actual macro system.
MMACROS.MAC This file contains additional useful macros.
MBIOS.MAC This file contains macros for the IBM-PC BIOS.
MDOS.MAC This file contains macros 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 system of macros 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 the documentation file for the macro system.
EXTA.DOC
MMACROS.DOC
MMEM.DOC
OGLAV.DOC
READ.DOC
TITLE.DOC
* .ASM files These files contain
examples of programs written in
macro system.
For installation on the system
copy the required file
MSYSTEM.MAC, and other files - by
Your discretion. For
successful programming in
system of macros
recommended in detail
read the manual and
the system itself
macros contained in
the MSYSTEM.MAC file.
Remember that the assembler errors
does not understand and it all depends
only from you.
Whatever your approach -
successes !!!
Assembler itself can be downloaded here
tasm25.zip - 175 KB.
For example, here is a simple code
database programs, accounting
income and expense of money
; MB.ASM
; D. L. Konyukhov
.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 ,, < SI >
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, < byte X, byte Y >, < SI >, 1, public
old_color EQU [BP] -1
getcolor, < old_color >
mov SI, buf_A
setcolor < DebAttr >
sayxy < X, Y, @ space, @ f_s >
setcolor < old_color >
say < @ DEBET_NAME, @ f_name >
setcolor < DebAttr >
say < @ space, @ f_s >
setcolor < old_color >
say < @ DEBET_QUAN, @ f_quan >
setcolor < DebAttr >
say < @ space, @ f_s >
setcolor < KreAttr >
say < @ space, @ f_s >
setcolor < old_color >
say < @ KREDIT_NAME, @ f_name >
setcolor < KreAttr >
say < @ space, @ f_s >
setcolor < old_color >
say < @ KREDIT_QUAN, @ f_quan >
setcolor < KreAttr >
say < @ space, @ f_s >
setcolor < old_color >
endf
func _fuser, < byte mode, word RecCur >, < DI >, 1, public
old_color EQU [BP] -1
mov DI, 1
mov AL, cs: mode
switch AL, < 0.1 >
case 1 {; draw
getcolor, < old_color >
setcolor < LblAttr >
reccount < @ rec_A >, < ii >
sayxy < 35, 2, @ ii, @ f_w4 >
recrecno < @ rec_A >, < ii >
sayxy < 41, 2, @ ii, @ f_w4 >
setcolor < old_color >
case 2 {
mov retr_cho, TRUE
while < retr_cho e TRUE > {
mov retr_cho, FALSE
mkeys_to
mov AL, cs: key_AL
switch AL, < NULLKEY, SPACEKEY, CRKEY, ESCKEY > {
case 1 {
mov AH, cs: key_AH
switch AH, < INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY >
case 1; insert
Inserting, < DI >
case 2; delete
Deleting, < DI >
case 3; sort
Sorting, < DI >
case 4; find
case 5; date
Dating, < DI >
case 6; menu
menupull
mov DI, 3
endcase
case 2 {; mark
case 3; input
Inputing < RecCur >, < DI >
case 4; exit
mov done, FALSE
mov DI, 0
endcase
endwh}
endcase
endf < word DI >
label1 db 'PARISH', 0
label2 db 'FLOW', 0
title1 db 'Name Quantity
', 0
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 'EXIT', 0
; --- Head procedure
func main
; Stack
cli
mov SP, size_com + len_stack
sti
; I open the system
farrelease < * CS 00,00 size_com + len_stack + len_vars >
initcon
release < * size_com + len_stack, 0 >
initsys
initmouse
cursor_off
; Draw the main frame
setcolor < < < byte ptr MainAttr > > >
drawbox < cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @
box_main >
drawbox < 0, 2.79, 2, @ box_main >
mouse_on
setcolor < LblAttr >
sayxy < 16, 0, @ label1, @ f_s >
sayxy < 56, 0, @ label2, @ f_s >
setcolor < DebAttr >
sayxy < 0, 1, @ title1, @ f_s >
setcolor < KreAttr >
say < @ title1, @ f_s >
setcolor < < < byte ptr MainAttr > > >
; Menu-line
color < MenuAttr >
mkeys_on < TRUE >
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 < FALSE >
; Opening the file
recopen < @ rec_A, @ file_A, len_A >
getmem < len_A >, < buf_A > ; recbuffer
recempty < @ rec_A, @ _mb_empty >
; Working with the file
color < MainAttr >
mov done, TRUE
while < done e TRUE >
dbedit < @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser >
endwh
; Close the file
freemem < * buf_A >
recclose < @ rec_A >
; I close the other
mkeys_of
; I close the system
mouse_off
cursor_on
; Exiting the program
clrscr
halt < 0 >
endf
END START