In .txt schreiben



  • Wie nutzt man das denn? Google sagt nichts...



  • LightBoom schrieb:

    Wie nutzt man das denn? Google sagt nichts...

    Für die Zeichen-Ausgabe am Bildschirm bei einer x86-CPU im Real-Mode oder im V86-Mode über die BIOS-Funktion "TELETYPE OUTPUT" werden auch Steuerzeichen wie 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) enspechend ausgeführt.

    --------V-100E-------------------------------
    INT 10 - VIDEO - TELETYPE OUTPUT
    AH = 0Eh
    AL = character to write
    BH = page number
    BL = foreground color (graphics modes only)
    Return: nothing
    Desc: display a character on the screen, advancing the cursor and scrolling
    the screen as necessary
    Notes: characters 07h (BEL), 08h (BS), 0Ah (LF), and 0Dh (CR) are interpreted
    and do the expected things
    IBM PC ROMs dated 1981/4/24 and 1981/10/19 require that BH be the same
    as the current active page
    BUG: if the write causes the screen to scroll, BP is destroyed by BIOSes
    for which AH=06h destroys BP
    SeeAlso: AH=02h,AH=06h,AH=0Ah

    Wie man eine Datei Erzeugen, Beschreiben, oder in den Speicher laden und anzeigen lassen kann hängt aber ganz von dem verwendeten OS ab.
    Für welche Zielplattform soll es denn eigentlich sein?

    Dirk



  • Für mein kleines Hobby OS



  • LightBoom schrieb:

    Für mein kleines Hobby OS

    Dann wird es etwas komplizierter.
    Weil im Bios selber gibt es keine Funktionen zum Laden und Beschreiben von Dateien, weil das richtet sich auch nach dem verwendeten Dateisystem.
    Sondern es gibt dann nur den "int 13h", womit man von einem Datenträger bestimmte Sectoren laden und beschreiben kann.

    File Allocation Table
    http://de.wikipedia.org/wiki/File_Allocation_Table

    INT_13H
    http://en.wikipedia.org/wiki/INT_13H

    Dirk



  • Danke Dirk, aber das ganze sollte eigentlich im RAM gemacht werden, weil ich noch keinen Dateisystemtreiber habe.



  • Dann definiere doch mal, was eine Datei für Dich ist.



  • Das sind Bits, und ich meinte so was wie HFS+, NTFS, FAT12/16/32, ext2/3/4, exFAT, ...



  • Dann gibt es auch noch die Möglichkeit den Textbildschirm selber zu beschreiben.

    mov ax,cs
        mov ds,ax
        mov ax,0B800h ; Segment-Adresse vom Textbildschirm
        mov es,ax
    
        mov ah,3   ; Offset-Adresse des Textbildschirms berechnen
        xor bh,bh  ; von der Cursorposition
        int 10h
    
        xor cx,cx
        add dl,dl  ; Spalte (verdoppeln)
        mov cl,dl
    
        xor ax,ax
        mov al,dh  ; Zeile
        mov bx,160 ; Anzahl Bytes einer Zeile(ASCII,Attribut,..)
        mul bx
        mov dx,ax  ; Zeilen-Offset merken 
    
        add ax,cx  ; Zeile+Spalte
        mov di,ax
    ;--------------
        lea si,T1
        mov cx,T1_len
        cld
    R1: lodsb     ; get byte from DS:SI
        stosb     ; store byte in ES:DI
        inc di    ; jump over attribut byte
        loop R1
    
        add dx,160 ; in die nächste Zeile
        mov di,dx
    
        lea si,T2
        mov cx,T2_len
    R2: lodsb     ; get byte from DS:SI
        stosb     ; store byte in ES:DI
        inc di    ; jump over attribut byte
        loop R2
    
        add dx,160 ; in die nächste Zeile
        mov di,dx
    
        lea si,T3
        mov cx,T3_len
    R3: lodsb     ; get byte from DS:SI
        stosb     ; store byte in ES:DI
        inc di    ; jump over attribut byte
        loop R3
        jmp $
    
    T1  DB "Test1"
    T1_len = ($-T1) ; $ = Offset-Adresse von dieser Stelle
    
    T2  DB "Test2"
    T2_len = ($-T2)
    
    T3  DB "Test3"
    T3_len = ($-T3)
    

    Ich hoffe das ich dort keinen Fehlen mit eingebaut habe.
    Sonst bitte bescheid sagen.

    RBIL->inter61a.zip->INTERRUP.A

    --------V-1003-------------------------------
    INT 10 - VIDEO - GET CURSOR POSITION AND SIZE
    AH = 03h
    BH = page number
    0-3 in modes 2&3
    0-7 in modes 0&1
    0 in graphics modes
    Return: AX = 0000h (Phoenix BIOS)
    CH = start scan line
    CL = end scan line
    DH = row (00h is top)
    DL = column (00h is left)
    Notes: a separate cursor is maintained for each of up to 8 display pages
    many ROM BIOSes incorrectly return the default size for a color display
    (start 06h, end 07h) when a monochrome display is attached
    With PhysTechSoft's PTS ROM-DOS the BH value is ignored on entry.
    SeeAlso: AH=01h,AH=02h,AH=12h/BL=34h,MEM 0040h:0050h,MEM 0040h:0060h

    Dirk



  • Was freecrac da oben für den Zeilenumbruch anspricht, sind "ASCII"-Codes: http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange



  • 92 schrieb:

    Was freecrac da oben für den Zeilenumbruch anspricht, sind "ASCII"-Codes: http://de.wikipedia.org/wiki/American_Standard_Code_for_Information_Interchange

    Oder genauer gesagt solche Steuerzeichen:
    http://de.wikipedia.org/wiki/Steuerzeichen

    Dirk


Anmelden zum Antworten