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

  1. Listing SNAPSHOT.COM - einzugeben mit DEBUG...
  2.  
  3. 0100 EB3E          JMP 0140             ;an den Programmanfang springen!
  4. 0102 66            DB 66                ;hier beginnt der Datenbereich
  5. 0103 6F            DB 6F                ;
  6. 0104 746F          JZ 0175              ;
  7. 0106 66            DB 66                ;
  8. 0107 69            DB 69                ;
  9. 0108 6C            DB 6C                ;
  10. 0109 65            DB 65                ;
  11. 010A 2E            CS:                  ;
  12. 010B 7069          JO 0176              ;
  13. 010D 63            DB 63                ;
  14. 010E 00FF          ADD BH,BH            ;
  15. 0110 FF4572        INC WORD PTR [DI+72] ;
  16. 0113 723A          JB 014F              ;
  17. 0115 2020          AND [BX+SI],AH       ;
  18. 0117 206465        AND [SI+65],AH       ;
  19. 011A 7465          JZ 0181              ;
  20. 011C 63            DB 63                ;
  21. 011D 0D0A24        OR AX,240A           ;
  22. 0120 53            PUSH BX              ;
  23. 0121 4E            DEC SI               ;
  24. 0122 41            INC CX               ;
  25. 0123 50            PUSH AX              ;
  26. 0124 53            PUSH BX              ;
  27. 0125 48            DEC AX               ;
  28. 0126 4F            DEC DI               ;
  29. 0127 54            PUSH SP              ;
  30. 0128 206163        AND [BX+DI+63],AH    ;
  31. 012B 7469          JZ 0196              ;
  32. 012D 7665          JBE 0194             ;
  33. 012F 2021          AND [BX+DI],AH       ;
  34. 0131 20472E        AND [BX+2E],AL       ;
  35. 0134 4B            DEC BX               ;
  36. 0135 7281          JB 00B8              ;
  37. 0137 67            DB 67                ;
  38. 0138 65            DB 65                ;
  39. 0139 7220          JB 015B              ;
  40. 013B 3837          CMP [BX],DH          ;
  41. 013D 0D0A24        OR AX,240A           ;
  42. 0140 B409          MOV AH,09            ;Anfangsmeldung
  43. 0142 BA2001        MOV DX,0120          ;(steht ab 0120)
  44. 0145 CD21          INT 21               ;ausgeben.
  45. 0147 B81635        MOV AX,3516          ;Interruptvektor Nr.16
  46. 014A CD21          INT 21               ;holen, und (steht in ES:BX)
  47. 014C 891E6E01      MOV [016E],BX        ;DIESES Programm
  48. 0150 891E7401      MOV [0174],BX        ;an den
  49. 0154 8C067001      MOV [0170],ES        ;entsprechenden Speicherstellen
  50. 0158 8C067601      MOV [0176],ES        ;modifizieren!
  51. 015C BA6901        MOV DX,0169          ;Neuer Interrupt Nr.16
  52. 015F B81625        MOV AX,2516          ;in die IDT
  53. 0162 CD21          INT 21               ;schreiben.
  54. 0164 BAAF11        MOV DX,11AF          ;Bis zum ersten freien Byte
  55. 0167 CD27          INT 27               ;resident machen - Programmende!
  56. 0169 08E4          OR AH,AH             ;Flags setzen
  57. 016B 7405          JZ 0172              ;War AH Null (=Tastaturabfrage) ?
  58. 016D EA00000000    JMP 00000000         ;No, dann zum alten INT16 springen.
  59. 0172 9C            PUSHF                ;Ja, dann alten INT16
  60. 0173 9A00000000    CALL 00000000        ;simulieren.
  61. 0178 3D1E07        CMP AX,071E          ;ctrl-6
  62. 017B 7401          JZ 017E              ;gedrückt?
  63. 017D CF            IRET                 ;No, dann Ende.
  64. 017E FA            CLI                  ;Ja, dann starten.
  65. 017F 1E            PUSH DS              ;Register
  66. 0180 06            PUSH ES              ;retten.
  67. 0181 8CC8          MOV AX,CS            ;Inhalt von CS
  68. 0183 8ED8          MOV DS,AX            ;nach DS und
  69. 0185 8EC0          MOV ES,AX            ;ES transferieren.
  70. 0187 55            PUSH BP              ;Alle
  71. 0188 53            PUSH BX              ;weiteren
  72. 0189 51            PUSH CX              ;Register
  73. 018A 52            PUSH DX              ;müssen
  74. 018B 56            PUSH SI              ;auch noch
  75. 018C 57            PUSH DI              ;gerettet
  76. 018D 1E            PUSH DS              ;werden.
  77. 018E EB4F          JMP 01DF             ;Bildschirm nach Puffer kopieren!
  78. 0190 1F            POP DS               ;Jetzt
  79. 0191 5F            POP DI               ;werden
  80. 0192 5E            POP SI               ;die
  81. 0193 5A            POP DX               ;Register
  82. 0194 59            POP CX               ;natürlich
  83. 0195 5B            POP BX               ;noch
  84. 0196 5D            POP BP               ;wiedergeholt.
  85. 0197 B400          MOV AH,00            ;Fkt.-Code für "Tastatur lesen"
  86. 0199 07            POP ES               ;Register
  87. 019A 1F            POP DS               ;wiederholen.
  88. 019B EBD5          JMP 0172             ;Sprung zur INT16-Simulation.
  89. 019D B90000        MOV CX,0000          ;Datei-Attribut = 0
  90. 01A0 BA0201        MOV DX,0102          ;Startadresse Dateiname
  91. 01A3 B43C          MOV AH,3C            ;Leerdatei
  92. 01A5 CD21          INT 21               ;herstellen.
  93. 01A7 730E          JNB 01B7             ;Kein Fehler, dann schreiben!
  94. 01A9 A31601        MOV [0116],AX        ;Dorthin die Fehlernummer...
  95. 01AC B409          MOV AH,09            ;und Fehlermeldung
  96. 01AE BA1001        MOV DX,0110          ;(steht ab 0110)
  97. 01B1 CD21          INT 21               ;ausgeben!
  98. 01B3 B44C          MOV AH,4C            ;Programm
  99. 01B5 CD21          INT 21               ;beenden.
  100. 01B7 BA0201        MOV DX,0102          ;Startadresse Dateiname.
  101. 01BA B43D          MOV AH,3D            ;Diese Datei
  102. 01BC B001          MOV AL,01            ;zum Schreiben (=01)
  103. 01BE CD21          INT 21               ;öffnen.
  104. 01C0 89C3          MOV BX,AX            ;
  105. 01C2 A30F01        MOV [010F],AX        ;File-Handle in 010f merken.
  106. 01C5 B9A00F        MOV CX,0FA0          ;0FA0 Bytes sollen in Datei.
  107. 01C8 8CC8          MOV AX,CS            ;In diesem Segment
  108. 01CA 8ED8          MOV DS,AX            ;stehen die Daten.
  109. 01CC BA0002        MOV DX,0200          ;Beginnend ab Offset 0200.
  110. 01CF 90            NOP                  ;--- nanu ? nop ? ex und hop ! ---
  111. 01D0 B440          MOV AH,40            ;schreiben in
  112. 01D2 CD21          INT 21               ;die Datei.
  113. 01D4 A10F01        MOV AX,[010F]        ;File-Handle zurück
  114. 01D7 89C3          MOV BX,AX            ;nach BX holen.
  115. 01D9 B43E          MOV AH,3E            ;Die entsprechende
  116. 01DB CD21          INT 21               ;Datei schliessen.
  117. 01DD EBB1          JMP 0190             ;und auf Taste warten...
  118. 01DF 1E            PUSH DS              ;von Bildschirm in Puffer kopieren
  119. 01E0 06            PUSH ES              ;
  120. 01E1 B800B0        MOV AX,B000          ;Startadr. Monochrom-Video (CGA: B800)
  121. 01E4 8ED8          MOV DS,AX            ;nach DS. (Dort liest MOVSB)
  122. 01E6 8CC8          MOV AX,CS            ;Inhalt von CS
  123. 01E8 8EC0          MOV ES,AX            ;nach ES. (Dorthin schreibt MOVSB)
  124. 01EA BE0000        MOV SI,0000          ;Lesen ab Offset 0000
  125. 01ED BF0002        MOV DI,0200          ;Schreiben ab Offset 0200
  126. 01F0 B9A00F        MOV CX,0FA0          ;Insgesamt 0FA0 Bytes
  127. 01F3 FC            CLD                  ;SI/DI nach Transfer INCrementieren
  128. 01F4 F3            REPZ                 ;Transfer
  129. 01F5 A4            MOVSB                ;durchführen
  130. 01F6 07            POP ES               ;Register
  131. 01F7 1F            POP DS               ;wiederholen
  132. 01F8 EBA3          JMP 019D             ;... und Puffer schreiben
  133.