home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / mbug / mbug012.arc / BASMODS.LBR / DUMPER.MAC < prev   
Text File  |  1979-12-31  |  2KB  |  127 lines

  1. ;This program is designed to enable Ver 6.22e Microworld basic
  2. ;to have a Graphics screen dump whenever the ^P key is pressed
  3.  
  4. ;THIS PROGRAM WILL NOT WORK PROPERLY ON ITS OWN 
  5.  
  6. ;For the program to work properly a patch needs to be added to Basic 6.22e
  7. ; i.e. @ A47E & F change from 04 A5 to 3D and C6 respectively.
  8.  
  9.  
  10. .Z80
  11.     .RADIX 16D
  12. ;DUMPER Dumps screen to printer
  13. ;Printer type selected by OUTL# % from BASIC or Default LIST device
  14.  
  15.  
  16. ;    RESIDES        0C63DH
  17.  
  18. ; LOOK FOR ^P KEY AND IF FOUND THEN CALL DUMPER ROUTINE
  19.  
  20.     CALL    0A504H    ;TEST FOR CONTROL KEY
  21.     RET    NZ    ;NOT CONTROL SO RETURN
  22.     PUSH    AF
  23.      CP    10H
  24.     JP    Z,DUMP+0C53DH-3    ; DO GRAPHICS SCREEN DUMP
  25.     POP    AF
  26.     RET
  27.  
  28. ;SCREEN DUMP ROUTINE BASED ON WILDCARDS Vol 2
  29.  
  30. DUMP:     PUSH    BC
  31.     PUSH    DE
  32.     PUSH    HL
  33.     PUSH    IX
  34.  
  35.     XOR    A
  36.     LD    (0109),A;Clear handshake byte for parallel port
  37.  
  38.     LD    A,8
  39.     LD    (80),A    ;Interrupt vector
  40.     LD    A,1BH    ;ESC
  41.     CALL    8045
  42.     LD    A,40    ;"@"
  43.     CALL    8045    ;reset printer
  44.     LD    A,1BH    ;"ESC"
  45.     CALL    8045
  46.     LD    A,41    ;"A"
  47.     CALL    8045    ;Set LF to
  48.     LD    A,8
  49.     CALL    8045    ;8/72"
  50.     LD    IX,0F000; Point to start of screen
  51.     XOR    A
  52.     LD    (07FEH),A
  53.     LD    A,1BH    ;"ESC"
  54.     CALL    8045
  55.     LD    A,4BH    ;"K"
  56.     CALL    8045    ;Set up Dot graphics mode
  57.     XOR    A
  58.     CALL    8045    ;N1=0
  59.     LD    A,2
  60.     CALL    8045    ;N2=2  line length =512 bits
  61.     LD    A,80
  62.     LD    (07FFH),A
  63.     LD    H,0FH
  64.     LD    L,(IX+0)
  65.     ADD    HL,HL
  66.     ADD    HL,HL
  67.     ADD    HL,HL
  68.     ADD    HL,HL
  69.     LD    A,(07FEH)
  70.     ADD    A,L
  71.     LD    L,A
  72.     LD    A,1
  73.     OUT    (0BH),A    ;Set bit 1 to examine Char ROM
  74.     LD    B,(HL)
  75.     XOR    A
  76.     OUT    (0BH),A    ;Reset ROM latch
  77.     LD    A,(07FFH)
  78.     AND    B
  79.     JR    Z,$+3H
  80.     CCF
  81.     RL    C
  82.     INC    HL
  83.     LD    A,L
  84.     AND    07
  85.     JR    NZ,$-15H
  86.     LD    A,C
  87.     CALL    8045
  88.     LD    DE,0FFF8
  89.     ADD    HL,DE
  90.     LD    A,(07FFH)
  91.     RRCA
  92.     LD    (07FFH),A
  93.     JR    NC,$-26H
  94.     INC    IX    ;Look at next screen location
  95.     DEFW    7DDDH
  96.     DEFW    3FE6
  97.     JR    NZ,$-41H
  98.     LD    A,0AH
  99.     CALL    8045
  100.     LD    A,(07FEH)
  101.     AND    A
  102.     JR    NZ,$+0EH
  103.     LD    A,8
  104.     LD    (07FEH),A
  105.     LD    DE,0FFC0
  106.     ADD    IX,DE
  107.     JR    $-6BH
  108.     DEFW    7CDDH
  109.     DEFW    0F4FEH
  110.     JR    NZ,$-75H
  111.     LD    A,1BH
  112.     CALL    8045
  113.     LD    A,40    ;"@"
  114.     CALL    8045    ;Reset printer
  115.  
  116.     POP    IX
  117.     POP    HL
  118.     POP    DE
  119.     POP    BC
  120.     POP    AF
  121.     LD    A,0AH    ;LOAD IN A LF CHAR
  122.     RET
  123.  
  124.     END
  125.  
  126.  
  127.