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
Nächste Überarbeitung
Vorhergehende Überarbeitung
Letzte ÜberarbeitungBeide Seiten der Revision
software:diy:assembler:cdrvnet [05/05/2006 13:05] – Bei diesem Artikel fehlt die Beschreibung des dargestellten Sourcecodes komplett. Bitte nachtragen pbksoftware:diy:assembler:cdrvnet [07/06/2007 22:06] micha
Zeile 1: Zeile 1:
-====== Verzeichnisnummern zählen für Cardrive im Netzwerk ====== 
  
-FIXME An dieser Stelle fehlt ein erklärender Text zum folgenden Sourcecode. Den möge der Autor bitte nachtragen um damit das Folgende besser erklären zu können. 
- 
-<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            ;mittleres 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> 
software/diy/assembler/cdrvnet.txt · Zuletzt geändert: 07/06/2007 00:06 (Externe Bearbeitung)