home *** CD-ROM | disk | FTP | other *** search
File List | 1987-11-21 | 7.0 KB | 133 lines |
- Listing SNAPSHOT.COM - einzugeben mit DEBUG...
-
- 0100 EB3E JMP 0140 ;an den Programmanfang springen!
- 0102 66 DB 66 ;hier beginnt der Datenbereich
- 0103 6F DB 6F ;
- 0104 746F JZ 0175 ;
- 0106 66 DB 66 ;
- 0107 69 DB 69 ;
- 0108 6C DB 6C ;
- 0109 65 DB 65 ;
- 010A 2E CS: ;
- 010B 7069 JO 0176 ;
- 010D 63 DB 63 ;
- 010E 00FF ADD BH,BH ;
- 0110 FF4572 INC WORD PTR [DI+72] ;
- 0113 723A JB 014F ;
- 0115 2020 AND [BX+SI],AH ;
- 0117 206465 AND [SI+65],AH ;
- 011A 7465 JZ 0181 ;
- 011C 63 DB 63 ;
- 011D 0D0A24 OR AX,240A ;
- 0120 53 PUSH BX ;
- 0121 4E DEC SI ;
- 0122 41 INC CX ;
- 0123 50 PUSH AX ;
- 0124 53 PUSH BX ;
- 0125 48 DEC AX ;
- 0126 4F DEC DI ;
- 0127 54 PUSH SP ;
- 0128 206163 AND [BX+DI+63],AH ;
- 012B 7469 JZ 0196 ;
- 012D 7665 JBE 0194 ;
- 012F 2021 AND [BX+DI],AH ;
- 0131 20472E AND [BX+2E],AL ;
- 0134 4B DEC BX ;
- 0135 7281 JB 00B8 ;
- 0137 67 DB 67 ;
- 0138 65 DB 65 ;
- 0139 7220 JB 015B ;
- 013B 3837 CMP [BX],DH ;
- 013D 0D0A24 OR AX,240A ;
- 0140 B409 MOV AH,09 ;Anfangsmeldung
- 0142 BA2001 MOV DX,0120 ;(steht ab 0120)
- 0145 CD21 INT 21 ;ausgeben.
- 0147 B81635 MOV AX,3516 ;Interruptvektor Nr.16
- 014A CD21 INT 21 ;holen, und (steht in ES:BX)
- 014C 891E6E01 MOV [016E],BX ;DIESES Programm
- 0150 891E7401 MOV [0174],BX ;an den
- 0154 8C067001 MOV [0170],ES ;entsprechenden Speicherstellen
- 0158 8C067601 MOV [0176],ES ;modifizieren!
- 015C BA6901 MOV DX,0169 ;Neuer Interrupt Nr.16
- 015F B81625 MOV AX,2516 ;in die IDT
- 0162 CD21 INT 21 ;schreiben.
- 0164 BAAF11 MOV DX,11AF ;Bis zum ersten freien Byte
- 0167 CD27 INT 27 ;resident machen - Programmende!
- 0169 08E4 OR AH,AH ;Flags setzen
- 016B 7405 JZ 0172 ;War AH Null (=Tastaturabfrage) ?
- 016D EA00000000 JMP 00000000 ;No, dann zum alten INT16 springen.
- 0172 9C PUSHF ;Ja, dann alten INT16
- 0173 9A00000000 CALL 00000000 ;simulieren.
- 0178 3D1E07 CMP AX,071E ;ctrl-6
- 017B 7401 JZ 017E ;gedrückt?
- 017D CF IRET ;No, dann Ende.
- 017E FA CLI ;Ja, dann starten.
- 017F 1E PUSH DS ;Register
- 0180 06 PUSH ES ;retten.
- 0181 8CC8 MOV AX,CS ;Inhalt von CS
- 0183 8ED8 MOV DS,AX ;nach DS und
- 0185 8EC0 MOV ES,AX ;ES transferieren.
- 0187 55 PUSH BP ;Alle
- 0188 53 PUSH BX ;weiteren
- 0189 51 PUSH CX ;Register
- 018A 52 PUSH DX ;müssen
- 018B 56 PUSH SI ;auch noch
- 018C 57 PUSH DI ;gerettet
- 018D 1E PUSH DS ;werden.
- 018E EB4F JMP 01DF ;Bildschirm nach Puffer kopieren!
- 0190 1F POP DS ;Jetzt
- 0191 5F POP DI ;werden
- 0192 5E POP SI ;die
- 0193 5A POP DX ;Register
- 0194 59 POP CX ;natürlich
- 0195 5B POP BX ;noch
- 0196 5D POP BP ;wiedergeholt.
- 0197 B400 MOV AH,00 ;Fkt.-Code für "Tastatur lesen"
- 0199 07 POP ES ;Register
- 019A 1F POP DS ;wiederholen.
- 019B EBD5 JMP 0172 ;Sprung zur INT16-Simulation.
- 019D B90000 MOV CX,0000 ;Datei-Attribut = 0
- 01A0 BA0201 MOV DX,0102 ;Startadresse Dateiname
- 01A3 B43C MOV AH,3C ;Leerdatei
- 01A5 CD21 INT 21 ;herstellen.
- 01A7 730E JNB 01B7 ;Kein Fehler, dann schreiben!
- 01A9 A31601 MOV [0116],AX ;Dorthin die Fehlernummer...
- 01AC B409 MOV AH,09 ;und Fehlermeldung
- 01AE BA1001 MOV DX,0110 ;(steht ab 0110)
- 01B1 CD21 INT 21 ;ausgeben!
- 01B3 B44C MOV AH,4C ;Programm
- 01B5 CD21 INT 21 ;beenden.
- 01B7 BA0201 MOV DX,0102 ;Startadresse Dateiname.
- 01BA B43D MOV AH,3D ;Diese Datei
- 01BC B001 MOV AL,01 ;zum Schreiben (=01)
- 01BE CD21 INT 21 ;öffnen.
- 01C0 89C3 MOV BX,AX ;
- 01C2 A30F01 MOV [010F],AX ;File-Handle in 010f merken.
- 01C5 B9A00F MOV CX,0FA0 ;0FA0 Bytes sollen in Datei.
- 01C8 8CC8 MOV AX,CS ;In diesem Segment
- 01CA 8ED8 MOV DS,AX ;stehen die Daten.
- 01CC BA0002 MOV DX,0200 ;Beginnend ab Offset 0200.
- 01CF 90 NOP ;--- nanu ? nop ? ex und hop ! ---
- 01D0 B440 MOV AH,40 ;schreiben in
- 01D2 CD21 INT 21 ;die Datei.
- 01D4 A10F01 MOV AX,[010F] ;File-Handle zurück
- 01D7 89C3 MOV BX,AX ;nach BX holen.
- 01D9 B43E MOV AH,3E ;Die entsprechende
- 01DB CD21 INT 21 ;Datei schliessen.
- 01DD EBB1 JMP 0190 ;und auf Taste warten...
- 01DF 1E PUSH DS ;von Bildschirm in Puffer kopieren
- 01E0 06 PUSH ES ;
- 01E1 B800B0 MOV AX,B000 ;Startadr. Monochrom-Video (CGA: B800)
- 01E4 8ED8 MOV DS,AX ;nach DS. (Dort liest MOVSB)
- 01E6 8CC8 MOV AX,CS ;Inhalt von CS
- 01E8 8EC0 MOV ES,AX ;nach ES. (Dorthin schreibt MOVSB)
- 01EA BE0000 MOV SI,0000 ;Lesen ab Offset 0000
- 01ED BF0002 MOV DI,0200 ;Schreiben ab Offset 0200
- 01F0 B9A00F MOV CX,0FA0 ;Insgesamt 0FA0 Bytes
- 01F3 FC CLD ;SI/DI nach Transfer INCrementieren
- 01F4 F3 REPZ ;Transfer
- 01F5 A4 MOVSB ;durchführen
- 01F6 07 POP ES ;Register
- 01F7 1F POP DS ;wiederholen
- 01F8 EBA3 JMP 019D ;... und Puffer schreiben