home *** CD-ROM | disk | FTP | other *** search
/ Simtel MSDOS 1992 December / simtel1292_SIMTEL_1292_Walnut_Creek.iso / msdos / printer / prtsc1.arc / PRTSC.8 next >
Text File  |  1987-04-05  |  3KB  |  189 lines

  1. ; --==>> PrtSc.8 <<==--     (c)1987 - Darren G. Friedlein                (4/2/87)
  2. newps    equ 67h
  3. code    segment
  4. main:    jmp start
  5.  
  6. ; __Data Stuff__
  7. monomon    db ?
  8. oldline    dw 80 dup(?)
  9. fvc    db 1bh,'M',15d,1bh,'S',0,1bh,'3',15
  10. fexp    db 1bh,'W',1,1bh,'M'
  11. fnlq    db 1bh,'x',1
  12. felite    db 1bh,'M'
  13. fbold    db 1bh,'G'
  14. freset    db 1bh,'@'
  15. newline db 'CNhNoNoNsNeN:N JSOtJaJnJdJaJrJdJ J JVOeJrJyJ-JcJoJnJdJeJnJsJeJdJ'
  16.     db ' J JEOxJpJaJnJdJeJdJ J JNOLJQJ J J9O6JcJpJiJ'
  17.         db ' J JBOoJlJdJfJaJcJeJ J JROeJmJoJvJeJ J<JPJrJtJSJcJ>J'
  18.  
  19. ; __Resident Code__
  20. respro:    cli
  21.     push ax,bx,cx,dx,si,di,es,ds
  22.     push cs
  23.     pop ds
  24.     mov monomon,0
  25.     call montype
  26.     call getline
  27.     lea dx,newline
  28.     call putline
  29.     mov si,offset freset
  30.     mov cx,2
  31.     call pprint
  32.     mov ah,0
  33.     sti
  34.     int 16h
  35.     cli
  36.     lea dx,oldline
  37.     call putline
  38.     cmp al,'a'
  39.     jl l1
  40.     cmp al,'z'
  41.     jg l1
  42.     sub al,32 
  43. l1:    cmp al,'V'            ; This section of the code will get
  44.     jne l2                ; 1 keypress and adjusts the printer
  45.     mov si,offset fvc
  46.     mov cx,9
  47.     call pprint
  48. l2:    cmp al,'E'
  49.     jne l3
  50.     mov si,offset fexp
  51.     mov cx,5
  52.     call pprint
  53. l3:    cmp al,'N'
  54.     jne l4
  55.     mov si,offset fnlq
  56.     mov cx,3
  57.     call pprint
  58. l4:    cmp al,'9'
  59.     jne l5
  60.     mov si,offset felite
  61.     mov cx,2
  62.     call pprint
  63. l5:    cmp al,'B'
  64.     jne l6
  65.     mov si,offset fbold
  66.     mov cx,2
  67.     call pprint
  68. l6:    cmp al,27
  69.     jne l7
  70.     jmp popall
  71. l7:    cmp al,'R'
  72.     jne quit
  73.     sti
  74.     mov ah,35h
  75.     mov al,newps
  76.     int 21h
  77.     mov ah,25h
  78.     mov al,5
  79.     mov ds,es
  80.     mov dx,bx
  81.     int 21h
  82.     jmp popall
  83. quit:    sti
  84.     int newps
  85.     mov si,offset freset
  86.     mov cx,2
  87.     call pprint
  88.     jmp popall
  89.  
  90. popall:    pop ds,es,di,si,dx,cx,bx,ax
  91.     iret
  92.  
  93. ; __Subroutines__
  94. montype    proc
  95.     mov ah,15
  96.     int 10h
  97.     cmp al,7
  98.     jne em
  99.     mov monomon,1
  100. em:    ret
  101. montype    endp
  102. getline    proc
  103.     lea dx,oldline
  104.     mov ax,0b800h
  105.     cmp monomon,0
  106.     je g1
  107.     mov ax,0b000h
  108. g1:    mov es,ax
  109.     mov cx,80
  110.     mov di,dx
  111.     mov si,0
  112. g2:    mov ax,es:[si]
  113.     add si,2
  114.     mov [di],ax
  115.     add di,2
  116.     loop g2
  117.     ret
  118. getline    endp
  119. putline    proc                ; set dx to the effective address of
  120.     push ax                ; the string (80 words) to be placed
  121.     mov ax,0b800h            ; at the top of the screen
  122.     cmp monomon,0
  123.     je p1
  124.     mov ax,0b000h
  125. p1:    mov es,ax
  126.     mov cx,80
  127.     mov si,dx
  128.     mov di,0
  129. p2:    lodsw
  130.     cmp monomon,0
  131.     je p5
  132.     cmp ah,'N'
  133.     jne p3
  134.     mov ah,'i'
  135. p3:    cmp ah,'O'
  136.     jne p4
  137.     mov ah,'j'
  138. p4:    cmp ah,'J'
  139.     jne p5
  140.     mov ah,7
  141. p5:    mov es:[di],ax
  142.     add di,2
  143.     loop p2
  144.     pop ax
  145.     ret
  146. putline    endp
  147. pprint    proc                ; set si to offset & cx to length
  148. pp1:    mov al,[si]
  149.     mov ah,0
  150.     mov dx,0
  151.     int 17h
  152.     inc si
  153.     loop pp1
  154.     ret
  155. pprint    endp
  156.  
  157. ; __Non-Resident Code__
  158. resmess    db 'PRTSC.COM - Darren Friedlen (4/2/87)',10d,13d
  159.         db '     Press <PrtSc> to activate',10d,13d,'$'
  160. start:    mov ah,35h
  161.     mov al,5
  162.     int 21h
  163.  
  164.     push ds
  165.     mov ah,25h
  166.     mov al,newps
  167.     mov ds,es
  168.     mov dx,bx
  169.     int 21h
  170.     pop ds
  171.  
  172.     mov ah,25h
  173.     mov al,5
  174.     mov dx,offset respro
  175.     int 21h
  176.  
  177.     lea dx,resmess    
  178.     call print
  179. done:    mov dx,offset resmess+1
  180.     int 27h
  181. print    proc
  182.     push ax
  183.     mov ah,9
  184.     int 21h
  185.     pop ax
  186.     ret
  187. print    endp
  188. code    ends
  189.