home *** CD-ROM | disk | FTP | other *** search
/ Power-Programmierung / CD1.mdf / cobol / library / cwindow / ufco03.asm < prev    next >
Encoding:
Assembly Source File  |  1993-07-28  |  17.2 KB  |  350 lines

  1. ;=====================================================================;
  2. ;  UFCO03.ASM   Universelle Formatanwendung                           ;
  3. ;                                                                     ;
  4. ;               ■ MS-Cobol V3.0                                       ;
  5. ;               ■ MF VS Cobol                                         ;
  6. ;=====================================================================;
  7. ;                                                                     ;
  8. ;  ■   Programmheader                                                 ;
  9. ;      - CODE segment cseg                                            ;
  10. ;      - ORG 100H                                                     ;
  11. ;      - PSP DB 256 DUP (0H) (Überspringen PSP)                       ;
  12. ;             erforderlich                                            ;
  13. ;      - INCLUDE ufinit.mac (Variablen initialisieren)                ;
  14. ;             erforderlich                                            ;
  15. ;                                                                     ;
  16. ;  ■   Programmbeendigung                                             ;
  17. ;      - RET 0                                                        ;
  18. ;                                                                     ;
  19. ;  ■   Behandling als COM/BIN Datei                                   ;
  20. ;      - Speicher freigeben muss gemacht werden                       ;
  21. ;      - Programm resident machen entfällt                            ;
  22. ;                                                                     ;
  23. ;  ■   Übergabeparameter                                              ;
  24. ;      - BP+0  Gepushter BP-Wert                                      ;
  25. ;      - BP+2  OFFSET Rücksprungadresse                               ;
  26. ;      - BP+4  SEGMENT Rücksprungadresse                              ;
  27. ;      - BP+26 6. Parameter Offset Daten                              ;
  28. ;      - BP+28 6. Parameter Segment                                   ;
  29. ;      - BP+22 5. Parameter Offset Schreibmarke                       ;
  30. ;      - BP+24 5. Parameter Segment                                   ;
  31. ;      - BP+18 4. Parameter Offset Returncode                         ;
  32. ;      - BP+20 4. Parameter Segment                                   ;
  33. ;      - BP+14 3. Parameter Offset erstes variables Feld              ;
  34. ;      - BP+16 3. Parameter Segment                                   ;
  35. ;      - BP+10 2. Parameter Offset Formatname                         ;
  36. ;      - BP+12 2. Parameter Segment                                   ;
  37. ;      - BP+6  1. Parameter Offset Funktionskennzeichen               ;
  38. ;      - BP+8  1. Parameter Segment                                   ;
  39. ;                                                                     ;
  40. ;      - Datenübergabe in ES                                          ;
  41. ;                                                                     ;
  42. ;      - FKZ/REST/SM  in PIC S9(4) COMP.                              ;
  43. ;        (2 Byte Integerfeld mit Umkehrung höherwertiges und          ;
  44. ;        niderwertiges Byte)                                          ;
  45. ;                                                                     ;
  46. ;      - Ganze Zahlen in COBOL Format (PIC S9(n))                     ;
  47. ;                                                                     ;
  48. ;      - Reale Zahlen in COBOL-Format (PIC S9(n)V9(n))                ;
  49. ;                                                                     ;
  50. ;      - Feldausrichtung der variablen Felder                         ;
  51. ;        -----Long  - nicht ausgerichtet                              ;
  52. ;        -----Float - nicht ausgerichtet        t                     ;
  53. ;        -----Char  - nicht ausgerichtet                              ;
  54. ;                                                                     ;
  55. ;  ■   Unterschiedliche INCLUDE-Dateien                               ;
  56. ;                                                                     ;
  57. ;      INCLUDE    ufinit.mac      ; Variablen initialisieren          ;
  58. ;      INCLUDE    ufafmco.mac     ; Steuerung Ausgabeformatierung     ;
  59. ;                                 ; Cobol Format                      ;
  60. ;      INCLUDE    ufftoaco.mac    ; Umwandlung FLOAT to ASCI          ;
  61. ;                                 ; Cobol Format                      ;
  62. ;      INCLUDE    ufltoaco.mac    ; Umwandlung LONG  to ASCI          ;
  63. ;                                 ; Cobol Format                      ;
  64. ;      INCLUDE    ufefmco.mac     ; Steuerung Eingabeformatierung     ;
  65. ;                                 ; Cobol Format                      ;
  66. ;      INCLUDE    ufatofco.mac    ; Umwandlung ASCI  to FLOAT         ;
  67. ;                                 ; Cobol Format                      ;
  68. ;      INCLUDE    ufatolco.mac    ; Umwandlung ASCI  to LONG          ;
  69. ;                                                                     ;
  70. ;                                                                     ;
  71. ;  ■   Gemeinsame INCLUDE-Dateien                                     ;
  72. ;                                                                     ;
  73. ;      INCLUDE    ufmain.mac       ; Steuerteil Hauptprogramm         ;
  74. ;      INCLUDE    uffnam.mac       ; Prüfen Formatnamen               ;
  75. ;      INCLUDE    ufbild.mac       ; Bild ausgeben                    ;
  76. ;      INCLUDE    ufdruck.mac      ; Steuern Druckausgabe             ;
  77. ;      INCLUDE    ufdrint.mac      ; Inetrrupt für Druckausgabe       ;
  78. ;      INCLUDE    ufea.mac         ; Steuerung Ein/Ausgabe            ;
  79. ;      INCLUDE    ufeatal.mac      ; Prüfen einfachen Tastencode      ;
  80. ;      INCLUDE    ufeaetal.mac     ; Prüfen erweiterten Tastencode    ;
  81. ;      INCLUDE    ufeatsal.mac     ; Prüfen Tastaturstatus (INS)      ;
  82. ;      INCLUDE    ufsmpos.mac      ; SM positionieren                 ;
  83. ;      INCLUDE    ufsmles.mac      ; SM-Position lesen                ;
  84. ;      INCLUDE    ufztles.mac      ; Lesen Zeichen von Tastatur       ;
  85. ;      INCLUDE    uftsles.mac      ; Lesen Tastaturstatus             ;
  86. ;      INCLUDE    ufzawri.mac      ; Zeichen auf Bildschirm schreiben ;
  87. ;      INCLUDE    ufzales.mac      ; Zeichen von Bildschirm lesen     ;
  88. ;                                                                     ;
  89. ;  ■   Auslieferung                                                   ;
  90. ;      - UFCO02.BIN                                                   ;
  91. ;                                                                     ;
  92. ;=====================================================================;
  93. ;
  94. ;---------------------------------------------------------------------
  95. ; Programmheader für MF- COBOL                           
  96. ;---------------------------------------------------------------------
  97.          PAGE     60,132              ; 60 Zeilen, 132 Spalten
  98.          TITLE    UNIF                                          
  99.          ORG      100H                ; PSP überspringen
  100.          PUBLIC   UNIF
  101. cseg     SEGMENT  PARA PUBLIC 'CODE'  ; Nur Code-Segment
  102.          ASSUME   CS: cseg 
  103.  
  104. ;--------------------------------------------------------------------- 
  105. ;  Hauptprogramm                                                       
  106. ;--------------------------------------------------------------------- 
  107. ;    
  108. UNIF  PROC FAR 
  109.         push bp                           ; BP sichern
  110.         mov  bp,sp                        ; BP ist SP
  111.         push si                           ; Register sichern
  112.         push di                           ; "
  113.         push ax                           ; "
  114.         push bx                           ; "
  115.         push cx                           ; "
  116.         push dx                           ; "
  117.         push ss                           ; "
  118.         push es                           ; "
  119.         push ds                           ; "
  120.         pushf                             ; Flags sichern
  121. ;---------------------------------------------------------------------
  122. ; Sichern Segmentadressen der Übergabeparameter    
  123. ; wie sie von MF- Cobol übergeben werden
  124. ;---------------------------------------------------------------------
  125. ;
  126. OFS_KZ    EQU      [BP+6]             ; Offset Funktionskennzeichen
  127. OFS_FNAM  EQU      [BP+10]            ; Offset Formatname
  128. OFS_FELD  EQU      [BP+14]            ; Offset erstes variable Feld
  129. OFS_RETFF EQU      [BP+18]            ; Offset Returncode
  130. OFS_SM    EQU      [BP+22]            ; Offset Schreibmarke
  131. OFS_DATEN EQU      [BP+26]            ; Offset Daten
  132.  
  133. ;--------------------------------------------------------------------- 
  134. ;  Globale Datendefinitionen                                           
  135. ;--------------------------------------------------------------------- 
  136.               
  137. ; Überspringen Daten 
  138.           jmp  DATENEND    
  139.                
  140. ;----------------------------------------------  
  141. ; Spezifische Daten
  142. ;----------------------------------------------
  143. PSP         DB     256 DUP (?)        ; PSP   überspringen
  144.                                       ; bei numerischen Feldern
  145. MS_NUM_SICH DB     (?)                ; Sichern letztes Byte
  146.  
  147. ;----------------------------------------------
  148. ; Gemeinsame Daten
  149. INCLUDE   ufdaten.mac                     
  150. ;----------------------------------------------
  151. DATENEND:
  152.                  
  153. ;--------------------------------------------------
  154. ; Sichern Segmentadressen der übergebenen Variablen
  155. ;--------------------------------------------------
  156. ;
  157.         mov  ax,word ptr [bp+08] 
  158.         mov  CS:SEGKZ,ax                  ; Funktionskennzeichen
  159.         mov  ax,word ptr [bp+12]
  160.         mov  CS:SEGFNAM,ax                ; Formatname
  161.         mov  ax,word ptr [bp+16]
  162.         mov  CS:SEGFELD,ax                ; Felder  
  163.         mov  ax,word ptr [bp+20]
  164.         mov  CS:SEGRETFF,ax               ; Returnfeld
  165.         mov  ax,word ptr [bp+24]
  166.         mov  CS:SEGSM,ax                  ; Schreibmarke
  167.         mov  ax,word ptr [bp+28]
  168.         mov  CS:SEGDATEN,ax               ; Daten
  169.  
  170. ;-------------------------------------------------
  171. ; Segmentregister gleichsetzen                       
  172. ;-------------------------------------------------
  173.         push cs                           ; CS in DS
  174.         pop  ds
  175.         push cs                           ; CS in ES
  176.         pop  es
  177.  
  178. ;-------------------------------------------------
  179. ; Formatname in Bereich fnamo                        
  180. ;-------------------------------------------------
  181.         mov  cx,8                         ; Formatname in fnamo
  182. fnamo0: mov  si,cx
  183.         dec  si
  184.         mov  bx,OFS_FNAM                  ; Offset Formatname in HProgramm
  185.         push ds                           ; Sichern DS
  186.         mov  ds,SEGFNAM                   ; Segemnt von Formatname ist DS
  187.         mov  al,BYTE PTR [bx+si]          ; Byte aus formatname+index
  188.         pop  ds                           ; Wieder DS
  189.         mov  BYTE PTR [fnamo+si],al       ; in fnamo+index
  190.         loop fnamo0
  191.  
  192. ;-------------------------------------------------
  193. ;  Variablen Initialisieren          
  194. ; (In COM-Format keine Initialisierung möglich)
  195. INCLUDE ufinit.mac
  196. ;-------------------------------------------------
  197.  
  198.  
  199. ;-------------------------------------------------
  200. ; Funktionskennzeichen Umwandeln          
  201. ; 0001 (Cobol-Comp-Format) --> 0100 INT-Format
  202. ;-------------------------------------------------
  203.         push ds
  204.         mov  ds,SEGKZ                     ; ES von MF-Cobol
  205.         mov  bx,word ptr OFS_KZ           ; Adresse kz
  206.         mov  ax,WORD PTR [bx]             ; Inhalt in AX
  207.         mov  byte ptr [bx],ah             ; ah und al vertauschen
  208.         mov  byte ptr [bx+1],al           ; ah und al vertauschen
  209.         pop  ds
  210.  
  211. ;-------------------------------------------------
  212. ; Schreibmarke Umwandeln          
  213. ; 0001 (Cobol-Comp-Format) --> 0100 INT-Format
  214. ;-------------------------------------------------
  215.         push ds
  216.         mov  ds,SEGSM                     ; ES von MF-Cobol
  217.         mov  bx,word ptr OFS_SM           ; Adresse kz
  218.         mov  ax,WORD PTR [bx]             ; Inhalt in AX
  219.         mov  byte ptr [bx],ah             ; ah und al vertauschen
  220.         mov  byte ptr [bx+1],al           ; ah und al vertauschen
  221.         pop  ds
  222.  
  223. ;------------------------------------------------- 
  224. ;  Zentrale Steuerung für alle Programmiersprachen                     
  225. ;  Registerrestaurierung enthalten                                     
  226. ;------------------------------------------------- 
  227. ;                                                             
  228. INCLUDE ufmain.mac
  229. ;
  230.  
  231. ;-------------------------------------------------
  232. ; Returnfeld Umwandeln          
  233. ; 0100 INT-Format  --> 0001 (Cobol-Comp-Format)
  234. ;-------------------------------------------------
  235.         push ds                           ; DS retten 
  236.         mov  ds,SEGRETFF                  ; ES von MF-Cobol
  237.         mov  bx,word ptr OFS_RETFF        ; Adresse RET
  238.         mov  ax,word ptr [bx]             ; Inhalt in AX
  239.         mov  byte ptr [bx],ah             ; ah und al vertauschen
  240.         mov  byte ptr [bx+1],al
  241.         pop  ds                           ; Wieder DS
  242.  
  243. ;-------------------------------------------------
  244. ; Schreibmarke Umwandeln          
  245. ; 0100 INT-Format  --> 0001 (Cobol-Comp-Format)
  246. ;-------------------------------------------------
  247.         push ds                           ; DS retten 
  248.         mov  ds,SEGSM                     ; ES von MF-Cobol
  249.         mov  bx,word ptr OFS_SM           ; Adresse SM
  250.         mov  ax,word ptr [bx]             ; Inhalt in AX
  251.         mov  byte ptr [bx],ah             ; ah und al vertauschen
  252.         mov  byte ptr [bx+1],al
  253.         pop  ds                           ; Wieder DS
  254.  
  255.         popf                              ; Alte Flags herstellen
  256.         pop  ds                           ; Register herstellen
  257.         pop  es 
  258.         pop  ss
  259.         pop  dx
  260.         pop  cx
  261.         pop  bx
  262.         pop  ax
  263.         pop  di
  264.         pop  si 
  265.         mov  sp,bp                   
  266.         pop  bp 
  267.         RET                               ; Rücksprung
  268. UNIF  ENDP 
  269.  
  270.  
  271.  
  272. ;---------------------------------------------------------------------
  273. ; Includes für die teilweise in Abhängigkeit der Programmier-
  274. ; sprache angepaßt werden müssen
  275. ;---------------------------------------------------------------------
  276. ;
  277. ;---------------------------------------------------------------------
  278. ; Ausgabeformatierung  COBOL Format
  279. ; (Gemeinsamer Teil)                          
  280. INCLUDE    ufafmco.mac       
  281. ;-------------------------------------------------
  282.  
  283.  
  284. ;--------------------------------------------------------------------
  285. ; _ftoa  Umwandlung FLOAT to ASCI  COBOL Format
  286. ; (Gemeinsamer Teil)                          
  287. INCLUDE ufftoaco.mac                                                
  288. ;--------------------------------------------------------------------
  289.  
  290.  
  291. ;-------------------------------------------------
  292. ; Umwandlung LONG  to ASCI  COBOL Format
  293. ; (Gemeinsamer Teil)                          
  294. INCLUDE    ufltoaco.mac          
  295. ;-------------------------------------------------
  296.  
  297.  
  298. ;---------------------------------------------------------------------
  299. ; Eingabeformatierung  COBOL Format
  300. ; (Gemeinsamer Teil)                          
  301. INCLUDE    ufefmco.mac       
  302. ;-------------------------------------------------
  303.  
  304.  
  305. ;--------------------------------------------------------------------
  306. ; _atof  Umwandlung ASCI to FLOAT  COBOL Format
  307. ; (Gemeinsamer Teil)                          
  308. INCLUDE ufatofco.mac                                                
  309. ;-----------------------
  310.  
  311.  
  312. ;--------------------------------------------------------------------
  313. ; _atol  Umwandlung ASCI to LONG   COBOL Format
  314. ; (Gemeinsamer Teil)                          
  315. INCLUDE ufatolco.mac                                                
  316. ;-----------------------
  317.  
  318.  
  319. ;---------------------------------------------------------------------
  320. ; Includes für gemeinsame Routinen                  
  321. ;---------------------------------------------------------------------
  322. ;
  323. INCLUDE    uffnam.mac          ; Prüfen Formatnamen
  324. INCLUDE    ufbild.mac          ; Bild ausgeben
  325. INCLUDE    ufschatt.mac        ; Schatten ausgeben
  326. INCLUDE    ufdruck.mac         ; Steuern Druckausgabe
  327. INCLUDE    ufdrint.mac         ; Inetrrupt für Druckausgabe
  328. INCLUDE    ufea.mac            ; Steuerung Ein/Ausgabe
  329. INCLUDE    ufeatal.mac         ; Prüfen einfachen Tastencode
  330. INCLUDE    ufeaetal.mac        ; Prüfen erweiterten Tastencode
  331. INCLUDE    ufeatsal.mac        ; Prüfen Tastaturstatus (INS)
  332. INCLUDE    ufsmpos.mac         ; SM positionieren
  333. INCLUDE    ufsmles.mac         ; SM-Position lesen
  334. INCLUDE    ufztles.mac         ; Lesen Zeichen von Tastatur
  335. INCLUDE    uftsles.mac         ; Lesen Tastaturstatus
  336. INCLUDE    ufzawri.mac         ; Zeichen auf Bildschirm schreiben
  337. INCLUDE    ufzales.mac         ; Zeichen von Bildschirm lesen
  338.  
  339.  
  340. ;---------------------------------------------------------------------
  341. ; Programmende einleiten                            
  342. ;---------------------------------------------------------------------
  343. ;
  344. STKSICH DB   1024 DUP (?)                 ; Sicherheitshalber für
  345.  
  346. PRENDE:
  347.  
  348. cseg    ENDS                              ; Segmentende
  349.         END                               ; Programmende
  350.