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 >
Wrap
Assembly Source File
|
1988-02-09
|
3KB
|
253 lines
PAGE ,132
TITLE Interfacesoftware fuer ft-interface
CODE SEGMENT
ASSUME CS:CODE,DS:CODE
MOTNUM DB ?
DIRNUM DB ?
POTNUM DB ?
POTNUMH DB ?
SWINUM DB ?
STATUS DB ?
DRPORT DW 03BCH
BUSYADR DW 03BDH
INIT PROC FAR
CLI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV BX,0100H
CALL DROUT
POP DS
POP DX
POP CX
POP BX
POP AX
STI
RET
INIT ENDP
MOTOR PROC FAR
CLI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV AH,0
MOV AL,MOTNUM ;lade Motornummer
CMP AL,1
JNE LAB2
MOV AL,MOT1
JMP DODIR
LAB2:
CMP AL,2
JNE LAB3
MOV AL,MOT2
JMP DODIR
LAB3:
CMP AL,3
JNZ LAB4
MOV AL,MOT3
JMP DODIR
LAB4:
MOV AL,MOT4 ; jetzt ist in AL die bitmaske fuer den Motor
DODIR: MOV AH,DIRNUM
CMP AH,0
JNE LAB5
MOV BL,DIROFF
JMP DIRDON
LAB5: CMP AH,1
JNE LAB6
MOV BL,DIRLEF
JMP DIRDON
LAB6:
MOV BL,DIRRIG ; jetzt ist in BL dir bitmask fuer
; die Richtung
DIRDON:
;jetzt ist die bitmask fuer den Motor gesetzt
MOV BH,STATUS ;lade alten Status
OR BH,AL ;setzt die beiden bits fuer Motor MNR auf 1
; also alter status, aber Motor muss
; noch maskiert werden
AND AL,BL ; ist das korrekte bit fuer den
; jetzt zu schaltenden Motor
XOR BH,AL
MOV BL,BH
CALL DROUT
POP DS
POP DX
POP CX
POP BX
POP AX
STI
RET
MOTOR ENDP
REFRE PROC FAR
CLI
PUSH AX
PUSH BX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV BL,STATUS
CALL DROUT
POP DS
POP BX
POP AX
STI
RET
REFRE ENDP
SWITCH PROC FAR
CLI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV DX,DRPORT
MOV CX,8
MOV AL,32H
OUT DX,AL
OR AL,8
OUT DX,AL
XOR AH,AH
LSTART: RCL AH,1
MOV DX,BUSYADR
IN AL,DX
AND AL,80H
CMP AL,80H
JNZ NEWLAB
OR AH,01
NEWLAB: CLC
MOV DX,DRPORT
MOV AL,30H
OUT DX,AL
MOV AL,38H
OUT DX,AL
LOOP LSTART
MOV AL,1
MOV CH,0
MOV CL,SWINUM
DEC CX
CMP CX,0
JE SWITES
LOOP2:
RCL AL,1
LOOP LOOP2
SWITES: AND AL,AH
CMP AL,0
JZ SWIEND
MOV AL,1
SWIEND: MOV SWINUM,AL
POP DS
POP DX
POP CX
POP BX
POP AX
STI
RET
SWITCH ENDP
POTI PROC FAR
CLI
PUSH AX
PUSH BX
PUSH CX
PUSH DX
PUSH DS
MOV AX,CS
MOV DS,AX
MOV DX,DRPORT
MOV AL,POTNUM
CMP AL,1
JNE MAKE2
MOV AL,POTI1
JMP DOPOTI
MAKE2: MOV AL,POTI2
DOPOTI: MOV CX,03FFH
OUT DX,AL
MOV AL,38H
OUT DX,AL
MOV DX,BUSYADR
LAB10: IN AL,DX
RCL AL,1
JNB LAB11
LOOP LAB10
LAB11: MOV AX,03FFH
SUB AX,CX
SAR AX,1
SAR AX,1
NOP
NOP
MOV POTNUM,AL
MOV POTNUMH,AH
POP DS
POP DX
POP CX
POP BX
POP AX
STI
RET
POTI ENDP
DROUT PROC NEAR ; in BL steht das Steuerbyte für
; den Druckerport
MOV CX,0008H ; Schleifenzähler
MOV DX,DRPORT
MOV CS:STATUS,BL ;status wird gemerkt
LOOPIN: MOV AL,30H
RCL BL,01H
JNB POUT
OR AL,04H
POUT: OUT DX,AL
OR AL,08H
OUT DX,AL
LOOP LOOPIN
MOV AL,39H
OUT DX,AL
RET
DROUT ENDP
DIROFF DB 0FFH
DIRLEF DB 0AAH
DIRRIG DB 055H
MOT1 DB 03H
MOT2 DB 0CH
MOT3 DB 030H
MOT4 DB 0C0H
POTI1 DB 0A0H
POTI2 DB 090H
;DRADR DW 03BCH
;BUSY DW 03BDH
CODE ENDS
END