*** empty log message ***
[h316.git] / lib / hachti / src / pl$u.asm
diff --git a/lib/hachti/src/pl$u.asm b/lib/hachti/src/pl$u.asm
new file mode 100644 (file)
index 0000000..19ee7da
--- /dev/null
@@ -0,0 +1,164 @@
+* (PL$U) REV 1.0 LOW LEVEL INCREMENTAL PLOTTER DRIVER
+*
+*    
+* PROGRAM TITLE:  PL$U  (PL$U, PL$D, PL$L, PL$R, PL$PU, PL$PD,
+*                        PL$UR,PL$UL,PL$DR,PL$DL)
+*                 
+*                 LOW LEVEL PEN PLOTTER ROUTINES
+*
+* REVISIONS: 
+*            1.0 (2007-05-27)
+*            1.1 (2007-11-08) - ADDED PEN POSITION TRACKING
+*                               TO PL$PU AND PL$PD
+*
+* AUTHOR:      
+*
+*    PHILIPP HACHTMANN
+*
+*
+* PURPOSE:     
+*
+*    LOW LEVEL PEN PLOTTER DRIVER ROUTINES PROVIDING HARDWARE
+*    ABSTRACTION BY PROVIDING SIMPLE ROUTINES FOR PEN MOVEMENT.
+*    
+*    
+* STORAGE:     
+*
+*    100 (OCTAL)
+*     64 (DECIMAL)
+*
+*
+* USAGE:       
+*
+*              CALL     PL$U  - STEP UP
+*             CALL     PL$D  - STEP DOWN
+*              CALL     PL$L  - STEP LEFT
+*              CALL     PL$R  - STEP RIGHT
+*              CALL     PL$PU - RAISE PEN
+*              CALL     PL$PD - LOWER PEN
+*
+*              CALL     PL$UR - STEP UP+RIGHT
+*              CALL     PL$UL - STEP UP+LEFT
+*              CALL     PL$DR - STEP DOWN+RIGHT
+*              CALL     PL$DL - STEP DOWN+LEFT
+*      
+*
+*
+********************************************************************************
+*
+*
+PADR   EQU     '40     PORT ADDRESS OF THE PLOTTER INTERFACE
+*
+*
+       SUBR    PL$U,UP
+       SUBR    PL$D,DOWN
+       SUBR    PL$R,RGHT
+       SUBR    PL$L,LEFT
+       SUBR    PL$PU,PENU
+       SUBR    PL$PD,PEND
+       SUBR    PL$UR,UR
+       SUBR    PL$UL,UL
+       SUBR    PL$DR,DR
+       SUBR    PL$DL,DL
+*
+*
+       REL             THIS IS A RELOCATABLE OBJECT
+       ORG     '0
+*
+*
+OUT    DAC     **      DO THE MOVEMENT
+       OTA     PADR
+       JMP     *-1
+*
+*      LDA     =-'10000
+*      AOA
+*      SZE
+*      JMP     *-2
+*
+       JMP*    OUT
+*
+*      
+UP     DAC     **
+       LDA     CUP
+       JST     OUT
+       JMP*    UP
+*
+*
+DOWN   DAC     **
+       LDA     CDWN
+       JST     OUT
+       JMP*    DOWN
+*
+*
+RGHT   DAC     **
+       LDA     CRGT
+       JST     OUT
+       JMP*    RGHT
+*
+*
+LEFT   DAC     **
+       LDA     CLFT
+       JST     OUT
+       JMP*    LEFT
+*
+*
+PENU   DAC     **
+       LDA     PEN
+       SNZ
+       JMP*    PENU
+       CRA
+       STA     PEN
+       LDA     CPNU
+       JST     OUT
+       JMP*    PENU
+*
+*      
+PEND   DAC     **
+       LDA     PEN
+       SZE
+       JMP*    PEND
+       LDA     CPND
+       JST     OUT
+       IRS     PEN
+       JMP*    PEND
+*
+*
+UL     DAC     **
+       LDA     CUP
+       ADD     CLFT
+       JST     OUT
+       JMP*    UL
+*
+*
+UR     DAC     **
+       LDA     CUP
+       ADD     CRGT
+       JST     OUT
+       JMP*    UR
+*
+*
+DL     DAC     **
+       LDA     CDWN
+       ADD     CLFT
+       JST     OUT
+       JMP*    DL
+*
+*
+DR     DAC     **
+       LDA     CDWN
+       ADD     CRGT
+       JST     OUT
+       JMP*    DR
+*
+*
+*                      CONSTANTS
+CUP    OCT     '1
+CDWN   OCT     '2
+CLFT   OCT     '4
+CRGT   OCT     '10
+CPNU   OCT     '20
+CPND   OCT     '40
+*
+PEN    DEC     0       PEN STATE: 1=DOWN
+*
+       END