home *** CD-ROM | disk | FTP | other *** search
/ The World of Computer Software / World_Of_Computer_Software-02-385-Vol-1of3.iso / f / ftlogo.zip / FTLOGO.ASM < prev    next >
Assembly Source File  |  1988-02-09  |  3KB  |  253 lines

  1.     PAGE    ,132
  2.     TITLE    Interfacesoftware fuer ft-interface
  3. CODE    SEGMENT
  4.     ASSUME    CS:CODE,DS:CODE
  5.  
  6.  
  7.  
  8. MOTNUM    DB    ?
  9. DIRNUM    DB    ?
  10. POTNUM    DB    ?
  11. POTNUMH    DB    ?
  12. SWINUM    DB    ?    
  13. STATUS  DB    ?
  14.  
  15. DRPORT    DW    03BCH
  16. BUSYADR DW    03BDH
  17.  
  18. INIT    PROC     FAR
  19.     CLI
  20.     PUSH    AX
  21.     PUSH     BX
  22.     PUSH    CX
  23.     PUSH     DX
  24.     PUSH    DS
  25.     MOV    AX,CS
  26.     MOV    DS,AX
  27.     MOV    BX,0100H
  28.     CALL    DROUT
  29.     POP    DS
  30.     POP    DX
  31.     POP    CX
  32.     POP    BX
  33.     POP    AX
  34.     STI
  35.     RET
  36. INIT    ENDP
  37.  
  38. MOTOR    PROC    FAR
  39.     CLI
  40.     PUSH    AX
  41.     PUSH     BX
  42.     PUSH    CX
  43.     PUSH     DX
  44.     PUSH    DS
  45.     MOV    AX,CS
  46.     MOV    DS,AX
  47.     MOV     AH,0
  48.     MOV     AL,MOTNUM          ;lade Motornummer     
  49.     CMP    AL,1
  50.     JNE    LAB2
  51.     MOV    AL,MOT1
  52.     JMP    DODIR
  53. LAB2:    
  54.     CMP    AL,2
  55.     JNE    LAB3
  56.     MOV    AL,MOT2
  57.     JMP    DODIR
  58. LAB3:    
  59.     CMP    AL,3
  60.     JNZ    LAB4
  61.     MOV    AL,MOT3
  62.     JMP    DODIR
  63. LAB4:    
  64.     MOV    AL,MOT4  ; jetzt ist in AL die bitmaske fuer den Motor
  65.  
  66. DODIR:  MOV    AH,DIRNUM
  67.     CMP     AH,0
  68.     JNE    LAB5
  69.     MOV    BL,DIROFF
  70.     JMP    DIRDON
  71. LAB5:    CMP    AH,1
  72.     JNE    LAB6
  73.     MOV    BL,DIRLEF
  74.     JMP    DIRDON
  75. LAB6:    
  76.     MOV    BL,DIRRIG    ; jetzt ist in BL dir bitmask fuer
  77.                 ; die Richtung
  78. DIRDON:    
  79.                 ;jetzt ist die bitmask fuer den Motor gesetzt
  80.     MOV    BH,STATUS    ;lade alten Status
  81.     OR    BH,AL           ;setzt die beiden bits fuer Motor MNR auf 1
  82.                 ; also alter status, aber Motor muss
  83.                 ; noch maskiert werden
  84.     AND    AL,BL        ; ist das korrekte bit fuer den
  85.                 ; jetzt zu schaltenden Motor
  86.     XOR    BH,AL
  87.     MOV    BL,BH
  88.     CALL    DROUT
  89.  
  90.  
  91.     POP    DS
  92.     POP    DX
  93.     POP    CX
  94.     POP    BX
  95.     POP    AX
  96.     STI
  97.     RET
  98. MOTOR    ENDP
  99.  
  100.  
  101. REFRE    PROC    FAR
  102.     CLI
  103.     PUSH    AX
  104.     PUSH    BX
  105.     PUSH    DS
  106.     MOV    AX,CS
  107.     MOV    DS,AX
  108.     MOV    BL,STATUS
  109.     CALL    DROUT
  110.     POP    DS    
  111.     POP    BX
  112.     POP    AX
  113.     STI
  114.     RET
  115. REFRE    ENDP             
  116.  
  117.  
  118. SWITCH    PROC    FAR
  119.     CLI
  120.     PUSH    AX
  121.     PUSH    BX
  122.     PUSH    CX
  123.     PUSH    DX
  124.     PUSH    DS
  125.     MOV    AX,CS
  126.     MOV    DS,AX
  127.     MOV    DX,DRPORT
  128.     MOV    CX,8
  129.     MOV    AL,32H
  130.     OUT    DX,AL
  131.     OR    AL,8
  132.     OUT    DX,AL
  133.     XOR    AH,AH
  134. LSTART:    RCL    AH,1
  135.     MOV    DX,BUSYADR    
  136.     IN    AL,DX
  137.     AND    AL,80H
  138.     CMP    AL,80H
  139.     JNZ    NEWLAB
  140.     OR    AH,01
  141. NEWLAB:    CLC
  142.     MOV    DX,DRPORT
  143.     MOV    AL,30H
  144.     OUT    DX,AL
  145.     MOV    AL,38H
  146.     OUT    DX,AL
  147.     LOOP    LSTART
  148.     MOV    AL,1
  149.     MOV    CH,0
  150.     MOV    CL,SWINUM
  151.     DEC    CX
  152.     CMP    CX,0
  153.     JE    SWITES
  154. LOOP2:    
  155.     RCL    AL,1
  156.     LOOP    LOOP2
  157.  
  158. SWITES: AND    AL,AH
  159.     CMP    AL,0
  160.     JZ    SWIEND
  161.     MOV    AL,1
  162. SWIEND:    MOV    SWINUM,AL
  163.     POP    DS
  164.     POP    DX
  165.     POP     CX
  166.     POP    BX
  167.     POP    AX
  168.     STI
  169.     RET
  170. SWITCH    ENDP
  171.  
  172. POTI    PROC    FAR
  173.     CLI
  174.     PUSH    AX
  175.     PUSH    BX
  176.     PUSH    CX
  177.     PUSH    DX
  178.     PUSH    DS
  179.     MOV    AX,CS
  180.     MOV    DS,AX
  181.     MOV    DX,DRPORT
  182.     MOV    AL,POTNUM
  183.     CMP    AL,1
  184.     JNE    MAKE2
  185.     MOV    AL,POTI1
  186.     JMP     DOPOTI
  187. MAKE2:    MOV    AL,POTI2
  188.     
  189. DOPOTI:    MOV    CX,03FFH
  190.     OUT    DX,AL
  191.     MOV    AL,38H
  192.     OUT    DX,AL
  193.     MOV    DX,BUSYADR
  194. LAB10:    IN    AL,DX
  195.     RCL    AL,1
  196.     JNB    LAB11
  197.     LOOP    LAB10        
  198. LAB11:    MOV    AX,03FFH
  199.     SUB    AX,CX
  200.     SAR    AX,1
  201.     SAR    AX,1
  202.     NOP
  203.     NOP
  204.     MOV    POTNUM,AL
  205.     MOV    POTNUMH,AH
  206.     POP    DS
  207.     POP    DX
  208.     POP     CX
  209.     POP    BX
  210.     POP    AX
  211.     STI
  212.     RET
  213. POTI    ENDP
  214.     
  215.  
  216. DROUT    PROC     NEAR         ; in BL steht das Steuerbyte für
  217.                 ; den Druckerport
  218.     MOV    CX,0008H    ; Schleifenzähler
  219.     MOV    DX,DRPORT
  220.     MOV    CS:STATUS,BL    ;status wird gemerkt
  221. LOOPIN:    MOV    AL,30H
  222.     RCL    BL,01H
  223.     JNB    POUT
  224.     OR    AL,04H
  225. POUT:    OUT    DX,AL
  226.     OR    AL,08H
  227.     OUT    DX,AL
  228.     LOOP    LOOPIN
  229.     MOV    AL,39H
  230.     OUT    DX,AL
  231.     RET
  232. DROUT    ENDP
  233.  
  234. DIROFF    DB    0FFH
  235. DIRLEF  DB    0AAH
  236. DIRRIG    DB      055H
  237. MOT1    DB    03H
  238. MOT2    DB    0CH
  239. MOT3    DB    030H
  240. MOT4    DB    0C0H    
  241. POTI1    DB    0A0H
  242. POTI2    DB    090H
  243.  
  244. ;DRADR    DW    03BCH
  245. ;BUSY    DW    03BDH
  246.  
  247.  
  248. CODE    ENDS
  249.     END
  250.  
  251.  
  252.                 
  253.