msystem.zip 411 KB.

Das Makrosystem ermöglicht es Ihnen, Programme in der bekannten Syntax einer Hochsprache zu schreiben und die Texte von Programmen für das Lesen und Wahrnehmen transparenter zu machen. Das System wurde für die Assembler-Compiler TASM-2.5 und MASM-5.0 entwickelt. Es handelt sich um eine strukturierte Hochsprache, mit der Programme jeder Größe und für jeden Zweck geschrieben werden können. Entwickelt für einen Programmierer, der bereits Erfahrung in der Programmierung in Assemblersprache hat.

Eine kurze Beschreibung der Hauptdateien im Archiv.

Das System der Makros selbst:

  • MSYSTEM.MAC Diese Datei enthält das eigentliche Makrosystem.
  • MMACROS.MAC Diese Datei enthält zusätzliche nützliche Makros.
  • MBIOS.MAC Diese Datei enthält Makros für das IBM-PC-BIOS.
  • MDOS.MAC Diese Datei enthält Makros für 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
  • Das System der Makros selbst:

  • 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
  • DOKUMENTATION:

  • MSYSTEM.DOC Dies ist die Dokumentationsdatei für das Makrosystem.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • READ.DOC
  • TITLE.DOC

  • * .ASM-Dateien Diese Dateien enthalten Beispiele für Programme, die im Makrosystem geschrieben sind.

    Kopieren Sie zur Installation auf dem System die Datei MSYSTEM.MAC und die restlichen Dateien nach eigenem Ermessen. Für eine erfolgreiche Programmierung im Makrosystem wird empfohlen, dass Sie sich mit dem Handbuch und dem Makrosystem selbst in der Datei MSYSTEM.MAC vertraut machen.
    Denken Sie daran, dass der Assembler Fehler nicht versteht und alles nur von Ihnen abhängt.
    Was auch immer Ihr Ansatz ist - Erfolg !!!
    Assembler selbst kann hier heruntergeladen werden tasm25.zip - 175 KB.

    Hier ist beispielsweise der Code für ein einfaches Datenbankprogramm, das die Einnahmen und Ausgaben von Geld

    berücksichtigt

    ;; MB.ASM
    ;; D. L. Konyukhov

    .MODELL KLEIN

    include msystem.mac
    Dazu gehört sys.mac
    gehören 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 ,, \u0026 lt; SI \u0026 gt;
    mov SI, buf_A
    memfill \u0026 lt; 32, @ DEBET_NAME, LEN_NAME \u0026 gt;
    memfill \u0026 lt; 0, @ DEBET_QUAN, LEN_QUAN \u0026 gt;
    memfill \u0026 lt; 32, @ KREDIT_NAME, LEN_NAME \u0026 gt;
    memfill \u0026 lt; 0, @ KREDIT_QUAN, LEN_QUAN \u0026 gt;
    endf

    func _pic, \u0026 lt; Byte X, Byte Y \u0026 gt;, \u0026 lt; SI \u0026 gt;, 1, public
    old_color EQU [BP] -1
    getcolor, \u0026 lt; old_color \u0026 gt;
    mov SI, buf_A
    setcolor \u0026 lt; DebAttr \u0026 gt;
    sayxy \u0026 lt; X, Y, @ Leerzeichen, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    Sagen Sie \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    Sagen Sie \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    Sagen Sie \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    Sagen Sie \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    endf

    func _fuser, \u0026 lt; Bytemodus, Wort RecCur \u0026 gt;, \u0026 lt; DI \u0026 gt;, 1, public
    old_color EQU [BP] -1
    mov DI, 1
    mov AL, cs: mode
    Schalter AL, \u0026 lt; 0,1 \u0026 gt;
    Fall 1 {; zeichnen
    getcolor, \u0026 lt; old_color \u0026 gt;
    setcolor \u0026 lt; LblAttr \u0026 gt;
    reccount \u0026 lt; @ rec_A \u0026 gt;, \u0026 lt; ii \u0026 gt;
    sayxy \u0026 lt; 35, 2, @ ii, @ f_w4 \u0026 gt;
    recrecno \u0026 lt; @ rec_A \u0026 gt;, \u0026 lt; ii \u0026 gt;
    sayxy \u0026 lt; 41, 2, @ ii, @ f_w4 \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    Fall 2 {
    mov retr_cho, TRUE
    während \u0026 lt; retr_cho e TRUE \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    Schalter AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    Fall 1 {
    mov AH, cs: key_AH
    Schalter AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    Fall 1;
    einfügen Einfügen von \u0026 lt; DI \u0026 gt;
    Fall 2;
    löschen Löschen, \u0026 lt; DI \u0026 gt;
    Fall 3; sortiere
    Sortieren, \u0026 lt; DI \u0026 gt;
    Fall 4; finde
    Fall 5; Datum
    Dating, \u0026 lt; DI \u0026 gt;
    Fall 6; Menü
    menupull
    mov DI, 3
    Endcase
    Fall 2 {; markiere
    Fall 3; Eingabe
    Eingabe von \u0026 lt; RecCur \u0026 gt;, \u0026 lt; DI \u0026 gt;
    Fall 4; Ausfahrt
    mov done, FALSE
    mov DI, 0
    Endcase
    endwh}
    Endcase
    endf \u0026 lt; word DI \u0026 gt;

    label1 db 'PARISH', 0
    label2 db 'FLOW', 0
    title1 db 'Titelmenge', 0

    ukeys1 db 1Eh, 0
    ukeys2 db 1Fh, 0
    skeys1 db 'ENTER', 0
    nkeys1 db 'ENTER', 0
    skeys2 db 'INS', 0
    nkeys2 db 'NEU', 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

    ; --- Kopfprozedur
    func main
    ;; Stapel
    cli
    mov SP, size_com + len_stack
    sti
    ;; Ich öffne das System
    Farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
    initcon
    Geben Sie \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
    frei initsys
    Initmouse
    cursor_off
    ;; Zeichnen Sie den Hauptrahmen
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; Byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    drawbox \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
    Zugbox \u0026 lt; 0, 2,79, 2, @ box_main \u0026 gt;
    mouse_on
    setcolor \u0026 lt; LblAttr \u0026 gt;
    sayxy \u0026 lt; 16, 0, @ label1, @ f_s \u0026 gt;
    sayxy \u0026 lt; 56, 0, @ label2, @ f_s \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    sayxy \u0026 lt; 0, 1, @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; KreAttr \u0026 gt;
    Sagen Sie \u0026 lt; @ title1, @ f_s \u0026 gt;
    setcolor \u0026 lt; \u0026 lt; \u0026 lt; Byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ;; Menüzeile
    Farbe \u0026 lt; MenuAttr \u0026 gt;
    mkeys_on \u0026 lt; TRUE \u0026 gt;
    mkeys_fr \u0026 lt; 79, 0, PGUPKEY * 100h, @ ukeys1, @ snull \u0026 gt;
    mkeys_fr \u0026 lt; 79,24, PGDNKEY * 100h, @ ukeys2, @ snull \u0026 gt;
    mkeys_fr \u0026 lt; 4.24, CRKEY, @ skeys1, @ nkeys1 \u0026 gt;
    mkeys_fr \u0026 lt; 14,24, INSKEY * 100h, @ skeys2, @ nkeys2 \u0026 gt;
    mkeys_fr \u0026 lt; 22,24, DELRKEY * 100h, @ skeys3, @ nkeys3 \u0026 gt;
    mkeys_fr \u0026 lt; 30,24, F5KEY * 100h, @ skeys4, @ nkeys4 \u0026 gt;
    mkeys_fr \u0026 lt; 37,24, F6KEY * 100h, @ skeys5, @ nkeys5 \u0026 gt;
    mkeys_fr \u0026 lt; 44,24, F7KEY * 100h, @ skeys6, @ nkeys6 \u0026 gt;
    mkeys_fr \u0026 lt; 51,24, F8KEY * 100h, @ skeys7, @ nkeys7 \u0026 gt;
    mkeys_fr \u0026 lt; 58,24, F10KEY * 100h, @ skeys8, @ nkeys8 \u0026 gt;
    mkeys_fr \u0026 lt; 65,24, ESCKEY, @ skeys9, @ nkeys9 \u0026 gt;
    mkeys_on \u0026 lt; FALSE \u0026 gt;
    ;; Öffnen der Datei
    Öffnen Sie \u0026 lt; @ rec_A, @ file_A, len_A \u0026 gt;
    getmem \u0026 lt; len_A \u0026 gt;, \u0026 lt; buf_A \u0026 gt; ; recbuffer
    recempty \u0026 lt; @ rec_A, @ _mb_empty \u0026 gt;
    ;; Arbeiten mit der Datei
    Farbe \u0026 lt; MainAttr \u0026 gt;
    mov done, TRUE
    während \u0026 lt; erledigt e TRUE \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3,79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ;; Schließen Sie die Datei
    freemem \u0026 lt; * buf_A \u0026 gt;
    Schließen Sie \u0026 lt; @ rec_A \u0026 gt;
    ;; Ich schließe den anderen
    mkeys_of
    ;; Ich schließe das System
    mouse_off
    cursor_on
    ;; Beenden des Programms
    clrscr
    halt \u0026 lt; 0 \u0026 gt;
    endf
    END START