; MB.ASM ; Konyuhov 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 ' LA LLEGADA ', 0 label2 db ' EL GASTO ', 0 title1 db ' Hаименование la Cantidad ', 0
ukeys1 db 1Eh, 0 ukeys2 db 1Fh, 0 skeys1 db ' ENTER ', 0 nkeys1 db ' INTRODUCE ', 0 skeys2 db ' INS', 0 nkeys2 db ' HОВЫЙ ', 0 skeys3 db ' DEL ', 0 nkeys3 db ' DEL ATREVIMIENTO ', 0 skeys4 db ' F5 ', 0 nkeys4 db ' PECHAT ', 0 skeys5 db ' F6 ', 0 nkeys5 db ' poryad ', 0 skeys6 db ' F7 ', 0 nkeys6 db ' LA BÚSQUEDA ', 0 skeys7 db ' F8 ', 0 nkeys7 db ' LA SUMA ', 0 skeys8 db ' F10 ', 0 nkeys8 db ' МЕHЮ ', 0 skeys9 db ' ESC ', 0 nkeys9 db ' SAL ', 0
;--- De cabeza пpоцедуpа func main ; La fusta cli mov SP, size_com+len_stack sti ; Otkpyvayu el sistema farrelease <* CS 00,00 size_com+len_stack+len_vars> initcon release <* size_com+len_stack, 0> initsys initmouse cursor_off ; Dibujo principal кад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>>> ; El menú-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> ; Otkpyvayu el fichero recopen <@ rec_A,@ file_A, len_A> getmem <len_A>, <buf_A>; recbuffer recempty <@ rec_A,@ _mb_empty> ; Trabajo con el fichero color <MainAttr> mov done, TRUE while <done e TRUE> dbedit <@ rec_A, 0, 3,79,23,@ cs:__pic,@ cs: __ fuser> endwh ; Zakpyvayu el fichero freemem <* buf_A> recclose <@ rec_A> ; Zakpyvayu пpочее mkeys_of ; Zakpyvayu el sistema mouse_off cursor_on ; La salida de пpогpаммы clrscr halt <0> endf END START
|