PofoWiki

Die ultimative Informationsquelle zum ATARI Portfolio

Benutzer-Werkzeuge

Webseiten-Werkzeuge


software:diy:assembler:cdrvnet

Unterschiede

Hier werden die Unterschiede zwischen zwei Versionen angezeigt.

Link zu dieser Vergleichsansicht

Beide Seiten der vorigen RevisionVorhergehende Überarbeitung
software:diy:assembler:cdrvnet [07/06/2007 22:06] michasoftware:diy:assembler:cdrvnet [Unbekanntes Datum] (aktuell) – Externe Bearbeitung (Unbekanntes Datum) 127.0.0.1
Zeile 1: Zeile 1:
 +====== Verzeichnisnummern zählen für Cardrive im Netzwerk ======
  
 +Dieses Unterprogramm setzt den Inhalt der Seiten [[hilfe:tipps:exchanges:CDrvNet|Das Carddrive im Netzwerk]] und [[software:diy:batch:cdrvnet|Programmierung --> Batch]] voraus.
 +
 +Mit einem ähnlichen Prinzip der "Nummerierung" werden Linienflüge weltweit verwaltet, da der Wertevorrat auf Grund der Zahlenbasis 36 erheblich größer ist.
 +
 +Im Jahre 1995 war das VNRPLUS1-Modul der Zähler eines TSR-Programmes zur fortlaufenden Speicherung von Bildschirminhalten (s. ZielDatei) und ist deshalb in keiner Hochsprache geschrieben worden. In der vorliegenden Form wird die Ausgabe in die Datei LETZTVNR.TXT als eine Möglichkeit der Datenübergabe an andere Programme verwendet. 
 +
 +Heutzutage könnte mit MySQL der Kern dieser Zählfunktion beispielsweise wie folgt realisiert werden: 
 +
 +<code mysql>
 +SELECT CONV(`VNR`,36,10)+1;
 +</code>
 +
 +
 +
 +==== VNRplus1.exe ====
 +
 +<code asm>
 +   .model small
 +   .code
 +   .stack 100h
 +   datum equ ´28.05.95´
 +   ;Byte-suchen
 +   ;df = 0; es:di = Vergleichsstring; al = Vergl.Wert; cx anzahl
 +   ;ze gefunden, di = gefundene Pos. + 1
 +   ;nz nicht gefunden, cx = 0, di = ende + 1
 +
 +
 +   ; Makrodefinitionen
 +   ; Makro für den DOS-Aufruf
 +   DOS     MACRO FunNr
 +           mov AH,FunNr
 +           int 21h
 +           ENDM
 +
 +   ; ---------------------------------------------------------
 +
 +   ; Konstanten für DOS-Funktionen
 +   oeffnen    equ 3Dh
 +   erstellen  equ 5Bh
 +   schliessen equ 3Eh
 +   lesen      equ 3Fh
 +   schreiben  equ 40h
 +   beenden    equ 4Ch
 +   ausgeben   equ 09h
 +   ; Ende des Vereinbarungsteils
 +   ; ---------------------------------------------------------
 +           org 100h
 +
 +   vnrbearb proc
 +           mov ax,cs
 +           mov ds,ax
 +           MOV DX,OFFSET QuellDATEI  ; Adresse des Quelldateinamens
 +           MOV AL,2               ; R/W-Zugriff
 +           DOS OEFFNEN
 +           JNC LAB_10
 +           mov dx,offset ErrorOeffn
 +           jmp ProgEnde
 +
 +   LAB_10:
 +           MOV cs:Haendler1,AX         ; Handle speichern
 +           MOV CX,3               ; 3 Byte aus Quelldatei lesen
 +           MOV BX,cs:Haendler1
 +           MOV DX,OFFSET vnr     ; Adresse des Lesepuffers
 +           DOS LESEN
 +           JNC LAB_11
 +           mov dx,offset ErrorLes
 +           jmp ProgEnde
 +
 +   LAB_11:
 +           call vnrplus1
 +
 +           ;schreibzeiger verschieben
 +           MOV BX,cs:Haendler1
 +           MOV DX,0
 +           MOV CX,0               ; auf Dateianfang
 +           mov ax,4200h
 +           int 21h                        ;DOS Zeiger verschieben
 +           JNC LAB_13
 +           mov dx,offset ErrorSchr
 +           jmp ProgEnde
 +   lab_13:
 +           ;geänderte VNR abspeichern
 +           MOV CX,3               ; 3 Byte schreiben
 +           MOV BX,cs:Haendler1
 +           MOV DX,OFFSET vnr     ; Adresse des Schreibpuffers
 +           DOS schreiben
 +           JNC LAB_12
 +           mov dx,offset ErrorSchr
 +           jmp ProgEnde
 +
 +   LAB_12: dos schliessen
 +           mov     dx,offset TextOK
 +           jnc     ProgEnde        ;kein Fehler
 +           mov     dx,offset ErrorSchlie
 +
 +   ProgEnde:
 +           mov si,dx
 +   ;        call textausgabe
 +           dos beenden
 +   ;        ret
 +
 +   vnrbearb endp
 +
 +   ; Datenbereich Dateiarbeit
 +   Version         db ´Version vom ´,Datum,10,13,´$´
 +   ErrorZÜ         db ´Abbruch durch Zeitüberschreitung!´,10,13,´$´
 +   TextOK          DB ´        Vorgang gespeichert!     ´,10,13,´$´
 +   ErrorErst       DB ´FEHLER beim ERSTELLEN der Datei! ´,10,13,´$´
 +   ErrorLes        DB ´FEHLER beim LESEN der Datei!     ´,10,13,´$´
 +   ErrorOeffn      DB ´FEHLER beim ÖFFNEN der Datei!    ´,10,13,´$´
 +   ErrorSchr       DB ´FEHLER beim SCHREIBEN der Datei! ´,10,13,´$´
 +   ErrorSchlie     DB ´FEHLER beim SCHLIESSEN der Datei!´,10,13,´$´
 +   QuellDatei      DB ´LETZTVNR.TXT´,0
 +   ;ZielDatei       DB ´VORGANG1.XXX´,0
 +   Haendler1       DW ?
 +   Haendler2       DW ?
 +   BytePuffer      DB ?
 +
 +
 +
 +   vnrplus1   proc
 +              mov  dx,cs
 +              mov  ds,dx
 +              mov  es,dx
 +
 +              mov  al,cs:vnrr            ;rechtes Zeichen
 +              call bytesuch
 +              mov  al,[di]
 +              mov  cs:vnrr,al
 +              cmp  cl,1               ;Übertrag?
 +              jz   weiterm            ;ja
 +              ret
 +
 +   weiterm:   mov  al,cs:vnrm            ;mittleres Zeichen
 +              call bytesuch
 +              mov  al,[di]
 +              mov  cs:vnrm,al
 +              cmp  cl,1               ;Übertrag?
 +              jz   weiterl            ;ja
 +              ret
 +
 +   weiterl:   mov  al,cs:vnrl            ;linkes Zeichen
 +              call bytesuch
 +              mov  al,[di]
 +              mov  cs:vnrl,al
 +              ret
 +
 +   vnrplus1   endp
 +
 +   bytesuch   proc
 +              lea  di,konvtab         ;Vergleichsziel
 +              mov  cx,37              ;Anzahl
 +              cld
 +   repnz      scasb
 +              jnz  fehler1            ;nicht gefunden
 +   fehler1:
 +              ret
 +   bytesuch   endp
 +
 +   vnr:                                ;3 Byte für VNR
 +   vnrl       db ´z´
 +   vnrm       db ´z´
 +   vnrr       db ´z´
 +   konvtab    db ´0123456789abcdefghijklmnopqrstuvwxyz0X´
 +           end
 +</code>