msystem.zip 411KB.

Systemet med makron gör att du kan skriva program i den välbekanta syntaxen för ett högnivåspråk och gör programtexterna mer transparenta för läsning och uppfattning. Designad för kompilatorer för monteringsspråk TASM-2.5 och MASM-5.0, det är ett strukturerat språk på hög nivå som kan användas för att skriva program i alla storlekar och syften. Designad för en programmerare som redan har erfarenhet av programmering på monteringsspråk.

En kort beskrivning av huvudfilerna i arkivet.

Själva systemet för makron:

  • MSYSTEM.MAC Den här filen innehåller det faktiska makrosystemet.
  • MMACROS.MAC Den här filen innehåller ytterligare användbara makron.
  • MBIOS.MAC Den här filen innehåller makron för IBM-PC BIOS.
  • MDOS.MAC Den här filen innehåller makron 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
  • Själva systemet för makron:

  • VÄLJ.M
  • CLOCK.M
  • CODER.M
  • FÄRG.M
  • CURSOR.M
  • DBEDIT.M
  • INIT.M
  • KEY.M
  • MENY.M
  • MKEYS.M
  • LÄS.M
  • REC.M
  • SAY.M
  • SCROLL.M
  • SORT.M
  • LJUD.M
  • WINDOW.M
  • DOKUMENTATION:

  • MSYSTEM.DOC Detta är dokumentationsfilen för makrosystemet.
  • EXTA.DOC
  • MMACROS.DOC
  • MMEM.DOC
  • OGLAV.DOC
  • LÄS.DOC
  • TITLE.DOC

  • * .ASM-filer Dessa filer innehåller exempel på program skrivna i makrosystemet.

    För att installera på systemet, se till att kopiera MSYSTEM.MAC-filen och resten av filerna - efter eget gottfinnande. För framgångsrik programmering i makrosystemet rekommenderas det att du bekantar dig i detalj med handboken och själva makrosystemet i filen MSYSTEM.MAC.
    Kom ihåg att monteraren inte förstår fel och allt beror bara på dig.
    Oavsett din inställning, framgång !!!
    Monteraren själv kan laddas ner här tasm25.zip - 175 kBytes.

    Här är till exempel koden för ett enkelt databasprogram, som redovisar intäkter och kostnader för pengar

    ; MB.ASM
    ; D. L. Konyukhov

    .MODELL SMÅ

    inkluderar msystem.mac
    inkludera sys.mac
    inkluderar conio.mac
    inkluderar mouse.mac
    inkludera mem.mac
    inkluderar kbd.mac
    inkluderar math.mac
    inkludera cursor.m
    inkluderar fönster.m
    inkluderar färg.m
    inkluderar rec.m
    inkluderar dbedit.m
    inkluderar say.m
    inkluderar read.m
    inkluderar key.m
    inkluderar mkeys.m

    inkluderar mb.m

    size_com = 20000 + 256
    len_stack = 20000
    len_vars = 20000

    .KOD
    BÖRJA START, 100 timmar, _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, offentlig
    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, @ space, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    säg \u0026 lt; @ DEBET_NAME, @ f_name \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    säg \u0026 lt; @ mellanslag, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    säg \u0026 lt; @ DEBET_QUAN, @ f_quan \u0026 gt;
    setcolor \u0026 lt; DebAttr \u0026 gt;
    säg \u0026 lt; @ mellanslag, @ f_s \u0026 gt;
    setfärg \u0026 lt; KreAttr \u0026 gt;
    säg \u0026 lt; @ mellanslag, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    säg \u0026 lt; @ KREDIT_NAME, @ f_name \u0026 gt;
    setfärg \u0026 lt; KreAttr \u0026 gt;
    säg \u0026 lt; @ mellanslag, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    säg \u0026 lt; @ KREDIT_QUAN, @ f_quan \u0026 gt;
    setfärg \u0026 lt; KreAttr \u0026 gt;
    säg \u0026 lt; @ mellanslag, @ f_s \u0026 gt;
    setcolor \u0026 lt; old_color \u0026 gt;
    endf

    funk _fuser, \u0026 lt; byte-läge, ord RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt ;, 1, offentligt
    old_color EQU [BP] -1
    mov DI, 1
    mov AL, cs: mode
    växla AL, \u0026 lt; 0,1 \u0026 gt;
    fall 1 {; rita
    getcolor, \u0026 lt; old_color \u0026 gt;
    setfärg \u0026 lt; LblAttr \u0026 gt;
    räkna \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, SANT
    medan \u0026 lt; retr_cho e SANT \u0026 gt; {
    mov retr_cho, FALSE
    mkeys_to
    mov AL, cs: key_AL
    växla AL, \u0026 lt; NULLKEY, SPACEKEY, CRKEY, ESCKEY \u0026 gt; {
    fall 1 {
    mov AH, cs: key_AH
    växel AH, \u0026 lt; INSKEY, DELRKEY, F6KEY, F7KEY, F8KEY, F10KEY \u0026 gt;
    fall 1; infoga
    Infogar, \u0026 lt; DI \u0026 gt;
    fall 2; ta bort
    Tar bort, \u0026 lt; DI \u0026 gt;
    fall 3; sortera
    Sortering, \u0026 lt; DI \u0026 gt;
    fall 4; hitta
    fall 5; datum
    Dating, \u0026 lt; DI \u0026 gt;
    fall 6; meny
    menupull
    mov DI, 3
    endcase
    fall 2 {; markera
    fall 3; inmatning
    Inmatning \u0026 lt; RecCur \u0026 gt ;, \u0026 lt; DI \u0026 gt;
    fall 4; avsluta
    mov gjort, FALSE
    mov DI, 0
    endcase
    endwh}
    endcase
    endf \u0026 lt; ord DI \u0026 gt;

    label1 db 'PARISH', 0
    label2 db 'FLOW', 0
    title1 db 'Titelmängd', 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 'SÖK', 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

    ; --- Huvudförfarande
    func main
    ; Stack
    cli
    mov SP, size_com + len_stack
    sti
    ; Jag öppnar systemet
    farrelease \u0026 lt; * CS 00,00 size_com + len_stack + len_vars \u0026 gt;
    initcon
    släpp \u0026 lt; * size_com + len_stack, 0 \u0026 gt;
    initsys
    initmouse
    cursor_off
    ; Rita huvudramen
    setfärg \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    draglåda \u0026 lt; cs: ScrnMinX, cs: ScrnMinY, cs: ScrnMaxX, cs: ScrnMaxY, @ box_main \u0026 gt;
    draglåda \u0026 lt; 0, 2.79, 2, @ box_main \u0026 gt;
    mouse_on
    setfärg \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;
    setfärg \u0026 lt; KreAttr \u0026 gt;
    säg \u0026 lt; @ title1, @ f_s \u0026 gt;
    setfärg \u0026 lt; \u0026 lt; \u0026 lt; byte ptr MainAttr \u0026 gt; \u0026 gt; \u0026 gt;
    ; Menyrad
    färg \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;
    ; Öppnar filen
    öppna igen \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;
    ; Arbetar med filen
    färg \u0026 lt; MainAttr \u0026 gt;
    mov gjort, SANT
    medan \u0026 lt; gjort e SANT \u0026 gt;
    dbedit \u0026 lt; @ rec_A, 0, 3.79,23, @ cs: __ pic, @ cs: __ fuser \u0026 gt;
    endwh
    ; Stäng filen
    freemem \u0026 lt; * buf_A \u0026 gt;
    stäng \u0026 lt; @ rec_A \u0026 gt;
    ; Jag stänger den andra
    mkeys_of
    ; Jag stänger systemet
    mouse_off
    cursor_on
    ; Avslutar programmet
    clrscr
    stoppa \u0026 lt; 0 \u0026 gt;
    endf
    SLUTSTART

    1