home
***
CD-ROM
|
disk
|
FTP
|
other
***
search
/
Turbo Toolbox
/
Turbo_Toolbox.iso
/
1988
/
02
/
snap
/
snap.lst
< prev
next >
Wrap
File List
|
1987-11-21
|
7KB
|
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