home *** CD-ROM | disk | FTP | other *** search
/ CP/M / CPM_CDROM.iso / lambda / soundpot / a / epsmode4.lbr / EPSMODE4.AZM / EPSMODE4.ASM
Encoding:
Assembly Source File  |  1993-10-26  |  6.8 KB  |  357 lines

  1.     ; This program queries user for various EPSON MX-80FT
  2.     ; modes and sets them accordingly.
  3.     ; Written by James R. Hossenlopp 9/5/1982
  4.     ; 3465 Big Ridge Road, Spencerport, N.Y. 14559
  5.     ; for general CPM systems
  6. cout     equ    0002    ; Console out function
  7. cin    equ    0001    ; Console in function
  8. string    equ     0009    ; String output function
  9. BDOS    equ     0005    ; Standard CPM entry
  10. PRINT   equ     0005    ; List output function
  11. READBUF equ    000ah    ; Read console buffer function
  12.     org 100h    ; set for com file
  13.     LXI H,0        ; SAVE CPM ORIGINAL STACK FOR SMOOTH RETURN
  14.     DAD SP
  15.     SHLD OLDSP
  16.     LXI SP,STKTOP
  17.     lxi d,intro    ; List Header
  18.     call pmsg    ; send string 
  19.  
  20.     lxi d,double    ; Query double strike
  21.     call pmsg
  22.     call conin    ; yes or no ( Y or N )
  23.     cpi 'Y'
  24.     jz yesds
  25.     cpi 'y'
  26.     jz yesds
  27.     lxi d,nn    ; no
  28.     call pmsg
  29.     mvi c,1bh    ; escape
  30.     call list
  31.     mvi c,'H'    ; turn off double strike 
  32.     call list
  33.     jmp next1
  34. yesds:    lxi d,yy
  35.     call pmsg    ; yes
  36.     mvi c,1bh
  37.     call list
  38.     mvi c,'G'    ; turn on double strike
  39.     call list
  40.  
  41. next1:    lxi d,comp    ; Query compressed
  42.     call pmsg
  43.     call conin
  44.     cpi 'Y'
  45.     jz yescom
  46.     cpi 'y'
  47.     jz yescom
  48.     lxi d,nn
  49.     call pmsg
  50.     mvi c,146    ; turn off compressed mode
  51.     call list
  52.     jmp next2
  53. yescom:    lxi d,yy
  54.     call pmsg
  55.     mvi c,15    ; turn on compressed mode
  56.     call list
  57.  
  58. next2:  lxi d,dbw    ; Query double width
  59.     call pmsg
  60. è    mvi c,1BH    ; double width lead-in (Graftrax +)
  61.     call list
  62.     mvi c,'W'
  63.     call list
  64.     call conin
  65.     cpi 'Y'
  66.     jz yesdbw
  67.     cpi 'y'
  68.     jz yesdbw
  69.     lxi d,nn
  70.     call pmsg
  71.     mvi c,0        ; turn double width off (Graftrax +)
  72.     call list
  73.     jmp next3
  74. yesdbw:    lxi d,yy
  75.     call pmsg
  76.     mvi c,1        ; turns on double width (Graftrax +)
  77.     call list
  78.  
  79. next3:    lxi d,emp    ; Query emphasized
  80.     call pmsg
  81.     call conin
  82.     cpi 'Y'
  83.     jz yesemp
  84.     cpi'y'
  85.     jz yesemp
  86.     lxi d,nn
  87.     call pmsg
  88.     mvi c,1bh
  89.     call list
  90.     mvi c,'F'    ; turns off emphasized mode
  91.     call list
  92.     jmp next5
  93. yesemp:    lxi d,yy
  94.     call pmsg
  95.     mvi c,1bh
  96.     call list
  97.     mvi c,'E'    ; turns on emphasized mode
  98.     call list
  99.  
  100. next5:    lxi d,italic    ; Query italicized 
  101.     call pmsg
  102.     call conin
  103.     cpi 'y'
  104.     jz yesita
  105.     cpi 'Y'
  106.     jz yesita
  107.     lxi d,nn
  108.     call pmsg
  109.     mvi c,1bh
  110.     call list
  111.     mvi c,'5'
  112.     call list
  113.  
  114. next10:    lxi d,papout    ; Query paper out sensor option
  115. è    call pmsg
  116.     mvi c,1bh    ; Start escape sequence
  117.     call list
  118.     call conin
  119.     cpi 'y'
  120.     jz igpout
  121.     cpi 'Y'
  122.     jz igpout
  123.     lxi d,nn
  124.     call pmsg
  125.     mvi c,'9'    ; Enable paper out sensor
  126.     call list
  127.  
  128. next11:    nop        ; was perf skip but setting top of form seemed
  129.             ; to cancel it.
  130.  
  131. next12:    lxi d,0ffffh    ; Pause before repainting header
  132. lll:    dcr e
  133.     nop
  134.     nop
  135.     nop
  136.     nop
  137.     jnz lll
  138.     dcr d
  139.     jnz lll
  140.  
  141.     lxi d,intro    ;Repaint header
  142.     call pmsg
  143.     lxi d,norm    ; Normal line feed?
  144.     call pmsg
  145.     call conin
  146.     cpi 'n'
  147.     jz next6
  148.     cpi 'N'
  149.     jz next6
  150.     lxi d,yy
  151.     call pmsg
  152.     mvi c,1bh    
  153.     call list
  154.     mvi c,'A'
  155.     call list
  156.     mvi c,12
  157.     call list
  158. ;    mvi c,1bh    ; Remove for Graftrax80
  159. ;    call list
  160. ;    mvi c,'2'
  161. ;    call list
  162.     MVI     C,1BH    ; SET FORM TO 66 LINES
  163.     CALL    LIST
  164.     MVI    C,'C'
  165.     CALL    LIST
  166.     MVI    C,66
  167.     CALL    LIST
  168.     jmp cpm
  169.  
  170. ènext6:    lxi d,nn    ; One and 1/2 line feed?
  171.     call pmsg
  172.     lxi d,half1    
  173.     call pmsg
  174.     call conin
  175.     cpi 'y'
  176.     jz next7
  177.     cpi 'Y'
  178.     jz next7
  179.     lxi d,nn
  180.     call pmsg
  181.  
  182. spc2:    lxi d,space2    ; Double spaced?
  183.     call pmsg
  184.     call conin
  185.     cpi 'y'
  186.     jz next8
  187.     cpi 'Y'
  188.     jz next8
  189.     lxi d,nn
  190.     call pmsg
  191.  
  192. cmplf:    lxi d,complf    ; Compressed line feed?
  193.     call pmsg
  194.     call conin
  195.     cpi 'y'
  196.     jz next9
  197.     cpi 'Y'
  198.     jz next9
  199.     lxi d,nn
  200.     call pmsg
  201.  
  202. cpm:    lxi d,perf    ; Query auto form feed before perforations
  203.     call pmsg
  204.     mvi c,1bh    ; Start escape sequence
  205.     call list
  206.     call conin
  207.     cpi 'y'
  208.     jz yperf
  209.     cpi 'Y'
  210.     jz yperf
  211.     lxi d,nn
  212.     call pmsg
  213.     mvi c,'O'    ; Disable auto jump over perforations
  214.     call list
  215.  
  216. cpm1:    mvi a,0dh    ; All Done !
  217.     call conout
  218.     mvi a,0ah
  219.     call conout
  220.     LHLD OLDSP
  221.     SPHL
  222.     RET        ; return to CPM
  223.  
  224. next7:    lxi d,yy    ; Set 1&1/2 line feed.
  225. è    call pmsg
  226.     mvi c,1bh
  227.     call list
  228.     mvi c,'A'
  229.     call list
  230.     mvi c,18
  231.     call list
  232. ;    mvi c,1bh    ; Remove for Graftrax80
  233. ;    call list
  234. ;    mvi c,'2'
  235. ;    call list
  236.     MVI    C,1BH    ; SET FORM TO 44 LINES
  237.     CALL    LIST
  238.     MVI    C,'C'
  239.     CALL    LIST
  240.     MVI    C,44
  241.     CALL    LIST
  242.     jmp cpm
  243.  
  244. next8:    lxi d,yy    ; Set double spaced line feeds
  245.     call pmsg
  246.     mvi c,1bh
  247.     call list
  248.     mvi c,'A'
  249.     call list
  250.     mvi c,24
  251.     call list
  252. ;    mvi c,1bh    ; Remove for Graftrax80
  253. ;    call list
  254. ;    mvi c,'2'
  255. ;    call list
  256.     MVI    C,1BH    ; SET FORM TO 33 LINES
  257.     CALL    LIST
  258.     MVI    C,'C'
  259.     CALL    LIST
  260.     MVI    C,33
  261.     CALL    LIST
  262.     jmp cpm
  263.  
  264. next9:    lxi d,yy    ; Set compressed line feed
  265.     call pmsg
  266.     mvi c,1bh
  267.     call list
  268.     mvi c,'1'
  269.     call list
  270.     MVI    C,1BH    ; SET FORM TO 113 LINES
  271.     CALL    LIST    ; NOT EXACTLY A FULL FORM
  272.     MVI    C,'C'    ; FORM = 113.14286
  273.     CALL    LIST
  274.     MVI    C,113
  275.     CALL    LIST
  276.     jmp cpm
  277.  
  278. yesita:    lxi d,yy    ; Yes send italics command
  279.     call pmsg
  280. è    mvi c,1bh
  281.     call list
  282.     mvi c,'4'
  283.     call list
  284.     jmp next10
  285.  
  286. igpout:    lxi d,yy    ; Yes disable paper out sensor
  287.     call pmsg
  288.     mvi c,'8'    ; ignore paper out sensor
  289.     call list
  290.     jmp next11
  291.  
  292. yperf:    lxi d,yy    ; Yes jump over perforations
  293.     call pmsg
  294.     mvi c,'N'
  295.     call list
  296.     mvi c,3        ; Jump by three (3) lines
  297.     call list
  298.     jmp cpm1
  299.  
  300. conout:    PUSH B
  301.     PUSH D
  302.     PUSH H
  303.     MOV E,A        ; PASS CHAR. IN "E" FOR CPM CALL
  304.     MVI C,cout    ; CONSOLE OUT FUNCTION CALL
  305.     CALL BDOS
  306.     POP H
  307.     POP D
  308.     POP B
  309.     RET
  310.  
  311.  
  312. conin:    MVI C,cin    ; CONSOLE IN FUNCTION CALL
  313.     CALL BDOS
  314.     RET
  315.  
  316. PMSG:    MVI C,string    ; STRING OUTPUT FUNCTION CALL
  317.     CALL BDOS
  318.     RET
  319.  
  320. list:    PUSH B
  321.     PUSH D
  322.     PUSH H
  323.     MOV E,C        ; PASS CHAR. IN "E" FOR CPM CALL
  324.     MVI C,PRINT    ; LIST DEVICE FUNCTION CALL
  325.     CALL BDOS
  326.     POP H
  327.     POP D
  328.     POP B
  329.     RET
  330.  
  331. NOCR:    LDAX D        ; SIMILAR TO STRING ROUTINE BUT DOES NOT
  332.     CPI '$'        ; AUTOMATICALLY SEND CR AT END OF STRING
  333.     RZ
  334.     CALL CONOUT
  335.     INX D
  336.     JMP NOCR
  337.  
  338. intro    db 0CH,1AH,'Epson MX80-F/T with Graftrax +  Set-up Program',13,10
  339.     db 'Answer questions yes or no by entering ( Y or N )',13,10
  340.     db '  Just entering Carriage Return will enter default value { }$'
  341. comp    db 13,10,10,'     Compressed Mode? ( Y or {N} )  ==>$'
  342. double    db 13,10,10,'     Double Strike Mode? ( Y or {N} )  ==>$'
  343. dbw    db 13,10,10,'     Double Width Mode? ( Y or {N} )  ==>$'
  344. emp    db 13,10,10,'     Emphasized Mode? ( Y or {N} )  ==>$'
  345. nn    db 13,'No,$'
  346. yy    db 13,'Yes,$'
  347. norm    db 13,10,10,'     Normal Line Feed? ( {Y} or N )  ==>$'
  348. half1    db 13,10,10,'     1&1/2 Normal Line Feed? ( Y or {N} )  ==>$'
  349. space2    db 13,10,10,'     Double Line Feed? ( Y or {N} )  ==>$'
  350. complf    db 13,10,10,'     Compressed Line Feed? ( Y or {N} )  ==>$'
  351. italic    db 13,10,10,'     Italicized Mode? ( Y or {N} )  ==>$'
  352. papout    db 13,10,10,'     Ignore Paper Out Sensor? ( Y or {N} )  ==>$'
  353. perf    db 13,10,10,'     Skip Over Page Perforation? ( Y or {N} ) '
  354.     db 13,10,'       provides auto formfeed at page length - three lines'
  355.     db 13,10,'       answer here please  ==>$'
  356. BUFF:    DS 32        ; CONSOLE BUFFER
  357. OLDSP:    DS 2
  358.     DS 64        ; STACK AREA, 32 LEVEL
  359. STKTOP: DS 2
  360.     end
  361.  
  362.