; MB.ASM
; Der Stallknechte D.L.

.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 ' DIE ANKUNFT ', 0
label2 db ' DER AUFWAND ', 0
title1 db ' Hаименование die Zahl ', 0

ukeys1 db 1Eh, 0
ukeys2 db 1Fh, 0
skeys1 db ' ENTER ', 0
nkeys1 db ' FÜHRE ', 0 EIN
skeys2 db ' INS', 0
nkeys2 db ' HОВЫЙ ', 0
skeys3 db ' DEL ', 0
nkeys3 db ' ENTFERNE ', 0
skeys4 db ' F5 ', 0
nkeys4 db ' PETSCHAT ', 0
skeys5 db ' F6 ', 0
nkeys5 db ' porjad ', 0
skeys6 db ' F7 ', 0
nkeys6 db ' DIE SUCHE ', 0
skeys7 db ' F8 ', 0
nkeys7 db ' DIE SUMME ', 0
skeys8 db ' F10 ', 0
nkeys8 db ' МЕHЮ ', 0
skeys9 db ' ESC ', 0
nkeys9 db ' GEHE ', 0 HINAUS

; - - Kopf- пpоцедуpа
func main
; Die Reitgerte
cli
mov SP, size_com+len_stack
sti
; Otkpywaju das System
farrelease <* CS 00,00 size_com+len_stack+len_vars>
initcon
release <* size_com+len_stack, 0>
initsys
initmouse
cursor_off
; Ich zeichne wesentlich кадp
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>>>
; Menju-stpoka
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>
; Otkpywaju die Datei
recopen <@ rec_A,@ file_A, len_A>
getmem <len_A>, <buf_A>; recbuffer
recempty <@ rec_A,@ _mb_empty>
; Ich arbeite mit der Datei
color <MainAttr>
mov done, TRUE
while <done e TRUE>
dbedit <@ rec_A, 0, 3,79,23,@ cs:__pic,@ cs: __ fuser>
endwh
; Sakpywaju die Datei
freemem <* buf_A>
recclose <@ rec_A>
; Sakpywaju пpочее
mkeys_of
; Sakpywaju das System
mouse_off
cursor_on
; Der Ausgang aus пpогpаммы
clrscr
halt <0>
endf
END START



Яндекс цитирования