home *** CD-ROM | disk | FTP | other *** search
- ;=====================================================================;
- ; UFCO03.ASM Universelle Formatanwendung ;
- ; ;
- ; ■ MS-Cobol V3.0 ;
- ; ■ MF VS Cobol ;
- ;=====================================================================;
- ; ;
- ; ■ Programmheader ;
- ; - CODE segment cseg ;
- ; - ORG 100H ;
- ; - PSP DB 256 DUP (0H) (Überspringen PSP) ;
- ; erforderlich ;
- ; - INCLUDE ufinit.mac (Variablen initialisieren) ;
- ; erforderlich ;
- ; ;
- ; ■ Programmbeendigung ;
- ; - RET 0 ;
- ; ;
- ; ■ Behandling als COM/BIN Datei ;
- ; - Speicher freigeben muss gemacht werden ;
- ; - Programm resident machen entfällt ;
- ; ;
- ; ■ Übergabeparameter ;
- ; - BP+0 Gepushter BP-Wert ;
- ; - BP+2 OFFSET Rücksprungadresse ;
- ; - BP+4 SEGMENT Rücksprungadresse ;
- ; - BP+26 6. Parameter Offset Daten ;
- ; - BP+28 6. Parameter Segment ;
- ; - BP+22 5. Parameter Offset Schreibmarke ;
- ; - BP+24 5. Parameter Segment ;
- ; - BP+18 4. Parameter Offset Returncode ;
- ; - BP+20 4. Parameter Segment ;
- ; - BP+14 3. Parameter Offset erstes variables Feld ;
- ; - BP+16 3. Parameter Segment ;
- ; - BP+10 2. Parameter Offset Formatname ;
- ; - BP+12 2. Parameter Segment ;
- ; - BP+6 1. Parameter Offset Funktionskennzeichen ;
- ; - BP+8 1. Parameter Segment ;
- ; ;
- ; - Datenübergabe in ES ;
- ; ;
- ; - FKZ/REST/SM in PIC S9(4) COMP. ;
- ; (2 Byte Integerfeld mit Umkehrung höherwertiges und ;
- ; niderwertiges Byte) ;
- ; ;
- ; - Ganze Zahlen in COBOL Format (PIC S9(n)) ;
- ; ;
- ; - Reale Zahlen in COBOL-Format (PIC S9(n)V9(n)) ;
- ; ;
- ; - Feldausrichtung der variablen Felder ;
- ; -----Long - nicht ausgerichtet ;
- ; -----Float - nicht ausgerichtet t ;
- ; -----Char - nicht ausgerichtet ;
- ; ;
- ; ■ Unterschiedliche INCLUDE-Dateien ;
- ; ;
- ; INCLUDE ufinit.mac ; Variablen initialisieren ;
- ; INCLUDE ufafmco.mac ; Steuerung Ausgabeformatierung ;
- ; ; Cobol Format ;
- ; INCLUDE ufftoaco.mac ; Umwandlung FLOAT to ASCI ;
- ; ; Cobol Format ;
- ; INCLUDE ufltoaco.mac ; Umwandlung LONG to ASCI ;
- ; ; Cobol Format ;
- ; INCLUDE ufefmco.mac ; Steuerung Eingabeformatierung ;
- ; ; Cobol Format ;
- ; INCLUDE ufatofco.mac ; Umwandlung ASCI to FLOAT ;
- ; ; Cobol Format ;
- ; INCLUDE ufatolco.mac ; Umwandlung ASCI to LONG ;
- ; ;
- ; ;
- ; ■ Gemeinsame INCLUDE-Dateien ;
- ; ;
- ; INCLUDE ufmain.mac ; Steuerteil Hauptprogramm ;
- ; INCLUDE uffnam.mac ; Prüfen Formatnamen ;
- ; INCLUDE ufbild.mac ; Bild ausgeben ;
- ; INCLUDE ufdruck.mac ; Steuern Druckausgabe ;
- ; INCLUDE ufdrint.mac ; Inetrrupt für Druckausgabe ;
- ; INCLUDE ufea.mac ; Steuerung Ein/Ausgabe ;
- ; INCLUDE ufeatal.mac ; Prüfen einfachen Tastencode ;
- ; INCLUDE ufeaetal.mac ; Prüfen erweiterten Tastencode ;
- ; INCLUDE ufeatsal.mac ; Prüfen Tastaturstatus (INS) ;
- ; INCLUDE ufsmpos.mac ; SM positionieren ;
- ; INCLUDE ufsmles.mac ; SM-Position lesen ;
- ; INCLUDE ufztles.mac ; Lesen Zeichen von Tastatur ;
- ; INCLUDE uftsles.mac ; Lesen Tastaturstatus ;
- ; INCLUDE ufzawri.mac ; Zeichen auf Bildschirm schreiben ;
- ; INCLUDE ufzales.mac ; Zeichen von Bildschirm lesen ;
- ; ;
- ; ■ Auslieferung ;
- ; - UFCO02.BIN ;
- ; ;
- ;=====================================================================;
- ;
- ;---------------------------------------------------------------------
- ; Programmheader für MF- COBOL
- ;---------------------------------------------------------------------
- PAGE 60,132 ; 60 Zeilen, 132 Spalten
- TITLE UNIF
- ORG 100H ; PSP überspringen
- PUBLIC UNIF
- cseg SEGMENT PARA PUBLIC 'CODE' ; Nur Code-Segment
- ASSUME CS: cseg
-
- ;---------------------------------------------------------------------
- ; Hauptprogramm
- ;---------------------------------------------------------------------
- ;
- UNIF PROC FAR
- push bp ; BP sichern
- mov bp,sp ; BP ist SP
- push si ; Register sichern
- push di ; "
- push ax ; "
- push bx ; "
- push cx ; "
- push dx ; "
- push ss ; "
- push es ; "
- push ds ; "
- pushf ; Flags sichern
- ;---------------------------------------------------------------------
- ; Sichern Segmentadressen der Übergabeparameter
- ; wie sie von MF- Cobol übergeben werden
- ;---------------------------------------------------------------------
- ;
- OFS_KZ EQU [BP+6] ; Offset Funktionskennzeichen
- OFS_FNAM EQU [BP+10] ; Offset Formatname
- OFS_FELD EQU [BP+14] ; Offset erstes variable Feld
- OFS_RETFF EQU [BP+18] ; Offset Returncode
- OFS_SM EQU [BP+22] ; Offset Schreibmarke
- OFS_DATEN EQU [BP+26] ; Offset Daten
-
- ;---------------------------------------------------------------------
- ; Globale Datendefinitionen
- ;---------------------------------------------------------------------
-
- ; Überspringen Daten
- jmp DATENEND
-
- ;----------------------------------------------
- ; Spezifische Daten
- ;----------------------------------------------
- PSP DB 256 DUP (?) ; PSP überspringen
- ; bei numerischen Feldern
- MS_NUM_SICH DB (?) ; Sichern letztes Byte
-
- ;----------------------------------------------
- ; Gemeinsame Daten
- INCLUDE ufdaten.mac
- ;----------------------------------------------
- DATENEND:
-
- ;--------------------------------------------------
- ; Sichern Segmentadressen der übergebenen Variablen
- ;--------------------------------------------------
- ;
- mov ax,word ptr [bp+08]
- mov CS:SEGKZ,ax ; Funktionskennzeichen
- mov ax,word ptr [bp+12]
- mov CS:SEGFNAM,ax ; Formatname
- mov ax,word ptr [bp+16]
- mov CS:SEGFELD,ax ; Felder
- mov ax,word ptr [bp+20]
- mov CS:SEGRETFF,ax ; Returnfeld
- mov ax,word ptr [bp+24]
- mov CS:SEGSM,ax ; Schreibmarke
- mov ax,word ptr [bp+28]
- mov CS:SEGDATEN,ax ; Daten
-
- ;-------------------------------------------------
- ; Segmentregister gleichsetzen
- ;-------------------------------------------------
- push cs ; CS in DS
- pop ds
- push cs ; CS in ES
- pop es
-
- ;-------------------------------------------------
- ; Formatname in Bereich fnamo
- ;-------------------------------------------------
- mov cx,8 ; Formatname in fnamo
- fnamo0: mov si,cx
- dec si
- mov bx,OFS_FNAM ; Offset Formatname in HProgramm
- push ds ; Sichern DS
- mov ds,SEGFNAM ; Segemnt von Formatname ist DS
- mov al,BYTE PTR [bx+si] ; Byte aus formatname+index
- pop ds ; Wieder DS
- mov BYTE PTR [fnamo+si],al ; in fnamo+index
- loop fnamo0
-
- ;-------------------------------------------------
- ; Variablen Initialisieren
- ; (In COM-Format keine Initialisierung möglich)
- INCLUDE ufinit.mac
- ;-------------------------------------------------
-
-
- ;-------------------------------------------------
- ; Funktionskennzeichen Umwandeln
- ; 0001 (Cobol-Comp-Format) --> 0100 INT-Format
- ;-------------------------------------------------
- push ds
- mov ds,SEGKZ ; ES von MF-Cobol
- mov bx,word ptr OFS_KZ ; Adresse kz
- mov ax,WORD PTR [bx] ; Inhalt in AX
- mov byte ptr [bx],ah ; ah und al vertauschen
- mov byte ptr [bx+1],al ; ah und al vertauschen
- pop ds
-
- ;-------------------------------------------------
- ; Schreibmarke Umwandeln
- ; 0001 (Cobol-Comp-Format) --> 0100 INT-Format
- ;-------------------------------------------------
- push ds
- mov ds,SEGSM ; ES von MF-Cobol
- mov bx,word ptr OFS_SM ; Adresse kz
- mov ax,WORD PTR [bx] ; Inhalt in AX
- mov byte ptr [bx],ah ; ah und al vertauschen
- mov byte ptr [bx+1],al ; ah und al vertauschen
- pop ds
-
- ;-------------------------------------------------
- ; Zentrale Steuerung für alle Programmiersprachen
- ; Registerrestaurierung enthalten
- ;-------------------------------------------------
- ;
- INCLUDE ufmain.mac
- ;
-
- ;-------------------------------------------------
- ; Returnfeld Umwandeln
- ; 0100 INT-Format --> 0001 (Cobol-Comp-Format)
- ;-------------------------------------------------
- push ds ; DS retten
- mov ds,SEGRETFF ; ES von MF-Cobol
- mov bx,word ptr OFS_RETFF ; Adresse RET
- mov ax,word ptr [bx] ; Inhalt in AX
- mov byte ptr [bx],ah ; ah und al vertauschen
- mov byte ptr [bx+1],al
- pop ds ; Wieder DS
-
- ;-------------------------------------------------
- ; Schreibmarke Umwandeln
- ; 0100 INT-Format --> 0001 (Cobol-Comp-Format)
- ;-------------------------------------------------
- push ds ; DS retten
- mov ds,SEGSM ; ES von MF-Cobol
- mov bx,word ptr OFS_SM ; Adresse SM
- mov ax,word ptr [bx] ; Inhalt in AX
- mov byte ptr [bx],ah ; ah und al vertauschen
- mov byte ptr [bx+1],al
- pop ds ; Wieder DS
-
- popf ; Alte Flags herstellen
- pop ds ; Register herstellen
- pop es
- pop ss
- pop dx
- pop cx
- pop bx
- pop ax
- pop di
- pop si
- mov sp,bp
- pop bp
- RET ; Rücksprung
- UNIF ENDP
-
-
-
- ;---------------------------------------------------------------------
- ; Includes für die teilweise in Abhängigkeit der Programmier-
- ; sprache angepaßt werden müssen
- ;---------------------------------------------------------------------
- ;
- ;---------------------------------------------------------------------
- ; Ausgabeformatierung COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufafmco.mac
- ;-------------------------------------------------
-
-
- ;--------------------------------------------------------------------
- ; _ftoa Umwandlung FLOAT to ASCI COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufftoaco.mac
- ;--------------------------------------------------------------------
-
-
- ;-------------------------------------------------
- ; Umwandlung LONG to ASCI COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufltoaco.mac
- ;-------------------------------------------------
-
-
- ;---------------------------------------------------------------------
- ; Eingabeformatierung COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufefmco.mac
- ;-------------------------------------------------
-
-
- ;--------------------------------------------------------------------
- ; _atof Umwandlung ASCI to FLOAT COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufatofco.mac
- ;-----------------------
-
-
- ;--------------------------------------------------------------------
- ; _atol Umwandlung ASCI to LONG COBOL Format
- ; (Gemeinsamer Teil)
- INCLUDE ufatolco.mac
- ;-----------------------
-
-
- ;---------------------------------------------------------------------
- ; Includes für gemeinsame Routinen
- ;---------------------------------------------------------------------
- ;
- INCLUDE uffnam.mac ; Prüfen Formatnamen
- INCLUDE ufbild.mac ; Bild ausgeben
- INCLUDE ufschatt.mac ; Schatten ausgeben
- INCLUDE ufdruck.mac ; Steuern Druckausgabe
- INCLUDE ufdrint.mac ; Inetrrupt für Druckausgabe
- INCLUDE ufea.mac ; Steuerung Ein/Ausgabe
- INCLUDE ufeatal.mac ; Prüfen einfachen Tastencode
- INCLUDE ufeaetal.mac ; Prüfen erweiterten Tastencode
- INCLUDE ufeatsal.mac ; Prüfen Tastaturstatus (INS)
- INCLUDE ufsmpos.mac ; SM positionieren
- INCLUDE ufsmles.mac ; SM-Position lesen
- INCLUDE ufztles.mac ; Lesen Zeichen von Tastatur
- INCLUDE uftsles.mac ; Lesen Tastaturstatus
- INCLUDE ufzawri.mac ; Zeichen auf Bildschirm schreiben
- INCLUDE ufzales.mac ; Zeichen von Bildschirm lesen
-
-
- ;---------------------------------------------------------------------
- ; Programmende einleiten
- ;---------------------------------------------------------------------
- ;
- STKSICH DB 1024 DUP (?) ; Sicherheitshalber für
-
- PRENDE:
-
- cseg ENDS ; Segmentende
- END ; Programmende
-