?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download | RSS feed

  1. ;(C)1991,92  Graphic  Library V1.1 for UFO2
  2. ;Mednonogov V.S.
  3. NOP_    EQU     0
  4. OR_     EQU     #B6
  5. XOR_    EQU     #AE
  6. AND_    EQU     #A6
  7. NEG_    EQU     #2F
  8. PUSH$   MAC
  9.         PUSH    HL
  10.         PUSH    DE
  11.         PUSH    BC
  12.         ENDM
  13. POP$    MAC
  14.         POP     BC
  15.         POP     DE
  16.         POP     HL
  17.         ENDM
  18.  
  19. PUTATR  PUSH$
  20.         LD      A,31
  21.         SUB     L
  22.         JR      C,RETPAT
  23.         INC     A
  24.         CP      B
  25.         JR      C,PUTAT0
  26.         LD      A,B
  27. PUTAT0  SUB     B
  28.         NEG
  29.         LD      (PUTAT4+1),A
  30.         SUB     B
  31.         NEG
  32.         LD      (PUTAT2+1),A
  33.         LD      A,H
  34.         RRCA
  35.         RRCA
  36.         RRCA
  37.         LD      B,A
  38.         AND     %11100000
  39.         OR      L
  40.         LD      L,A
  41.         LD      A,B
  42.         AND     %0000011
  43. SELAT1  ADD     A,#58
  44.         LD      H,A
  45. PUTAT1  LD      A,H
  46. SELAT2  CP      #5B
  47.         JR      NC,RETPAT
  48.         PUSH    HL
  49. PUTAT2  LD      B,#FF
  50. PUTAT3  LD      A,(DE)
  51.         INC     DE
  52.         LD      (HL),A
  53.         INC     HL
  54.         DJNZ    PUTAT3
  55. PUTAT4  LD      HL,0
  56.         ADD     HL,DE
  57.         EX      DE,HL
  58.         POP     HL
  59.         LD      A,L
  60.         ADD     A,%00100000
  61.         LD      L,A
  62.         JR      NC,PUTAT7
  63.         INC     H
  64. PUTAT7  DEC     C
  65.         JR      NZ,PUTAT1
  66. RETPAT  POP$
  67.         RET
  68.  
  69. PUTSIM  PUSH$   ;HL(0-23,0-31)
  70.         LD      A,31
  71.         SUB     L
  72.         JR      C,RETSIM
  73.         INC     A
  74.         CP      B
  75.         JP      C,   PUTSI0
  76.         LD      A,B
  77. PUTSI0  SUB     B
  78.         NEG
  79.         LD      (PUTSI4+1),A
  80.         SUB     B
  81.         NEG
  82.         LD      (PUTSI2+1),A
  83. PUTSI1  LD      A,H
  84.         CP      24
  85.         JR      NC,RETSIM
  86.         PUSH    HL
  87.         PUSH    DE
  88.         EX      DE,HL
  89.         CALL    SCOORD
  90.         POP     DE
  91. PUTSI2  LD      B,0
  92.         PUSH    HL
  93. PUTSI3  LD      A,(DE)
  94.         INC     DE
  95. PUTSID  OR      (HL)
  96.         LD      (HL),A
  97.         INC     L
  98.         DJNZ    PUTSI3
  99. PUTSI4  LD      HL,0
  100.         ADD     HL,DE
  101.         EX      DE,HL
  102.         POP     HL
  103.         INC     H
  104.         LD      A,%00000111
  105.         AND     H
  106.         JR      NZ,PUTSI2
  107.         POP     HL
  108.         INC     H
  109.         DEC     C
  110.         JR      NZ,PUTSI1
  111. RETSIM  POP$
  112.         RET
  113.  
  114. PRINBT  DEFB    0
  115. PRINT   PUSH    AF
  116.         LD      (PRINBT),A
  117.         LD      A,D
  118.         CP      24
  119.         JR      NC,RETPRI
  120. PRIN2   LD      A,E
  121.         CP      32
  122.         JR      C,PRIN9
  123.         LD      E,0
  124.         INC     D
  125.         LD      A,D
  126.         CP      24
  127.         JR      NC,RETPRI
  128. PRIN9   PUSH$
  129. PRIN8   LD      L,(HL)
  130.         LD      H,0
  131.         ADD     HL,HL
  132.         ADD     HL,HL
  133.         ADD     HL,HL
  134.         ADD     HL,BC
  135.         PUSH    HL
  136.         CALL    SCOORD
  137.         POP     DE
  138.         LD      B,8
  139. PRIN1   LD      A,(DE)
  140. PRINCD  OR      (HL)
  141.         LD      (HL),A
  142.         INC     DE
  143.         INC     H
  144.         DJNZ    PRIN1
  145.         POP$
  146.         INC     HL
  147.         INC     E
  148.         LD      A,(PRINBT)
  149.         DEC     A
  150.         LD      (PRINBT),A
  151.         JR      NZ,PRIN2
  152. RETPRI  POP     AF
  153.         RET
  154.  
  155. GETSIM  PUSH$
  156.         LD      A,B
  157.         LD      (GETSI2+1),A
  158. GETSI1  PUSH    HL
  159.         PUSH    DE
  160.         EX      DE,HL
  161.         CALL    SCOORD
  162.         POP     DE
  163. GETSI2  LD      B,0
  164.         PUSH    HL
  165. GETSI3  LD      A,(HL)
  166.         LD      (DE),A
  167.         INC     DE
  168.         INC     L
  169.         DJNZ    GETSI3
  170.         POP     HL
  171.         INC     H
  172.         LD      A,%00000111
  173.         AND     H
  174.         JR      NZ,GETSI2
  175.         POP     HL
  176.         INC     H
  177.         DEC     C
  178.         JR      NZ,GETSI1
  179.         POP$
  180.         RET
  181.  
  182. GETATR  PUSH$
  183.         LD      A,B
  184.         LD      (GETAT2+1),A
  185.         LD      A,H
  186.         RRCA
  187.         RRCA
  188.         RRCA
  189.         LD      B,A
  190.         AND     %11100000
  191.         OR      L
  192.         LD      L,A
  193.         LD      A,B
  194.         AND     %00000011
  195. SELAT3  ADD     A,#5B
  196.         LD      H,A
  197. GETAT2  LD      B,#FF
  198.         PUSH    HL
  199. GETAT3  LD      A,(HL)
  200.         LD      (DE),A
  201.         INC     DE
  202.         INC     HL
  203.         DJNZ    GETAT3
  204.         POP     HL
  205. GETAT6  LD      A,L
  206.         ADD     A, %00100000
  207.         LD      L,A
  208.         JR      NC,GETAT7
  209.         INC     H
  210. GETAT7  DEC     C
  211.         JR      NZ,GETAT2
  212.         POP$
  213.         RET
  214.  
  215. SELSCR  LD      (SCOSCR+1),A ;A-screen address
  216.         LD      (BCOSCR+1),A
  217.         LD      (PCOSCR+1),A
  218.         ADD     A,#18
  219.         LD      (SELAT1+1),A; A-attr address
  220.         LD      (SELAT3+1),A
  221.         ADD     A,3
  222.         LD      (SELAT2+1),A
  223.         RET
  224.  
  225. PUTSPR  PUSH$   ;(de)--(hl)(0-191,0-255):b*c
  226.         LD      A,L
  227.         AND     %00000111
  228.         LD      (SHIFTS+1),A
  229.         LD      A,L
  230.         AND     %11111000
  231.         RRCA
  232.         RRCA
  233.         RRCA
  234.         LD      L,A
  235.         LD      A,B
  236. PUTSP0  LD      (PUTSP2+1),A
  237. PUTSP2  LD      B,0
  238.         LD      A,H
  239.         CP      %11000000
  240.         JR      NC,RETPSP
  241.         PUSH    HL
  242.         PUSH    DE
  243.         EX      DE,HL
  244.         CALL    BCOORD
  245.         POP     DE
  246. PUTSP1  PUSH    BC
  247.         XOR     A
  248.         LD      C,A
  249. SHIFTS  OR      0
  250.         LD      B,A
  251.         LD      A,(DE)
  252.         JR      Z,PTSPD1
  253. SHFTDO  RRA
  254.         RR      C
  255.         DJNZ    SHFTDO
  256. PTSPD1  OR      (HL)
  257.         LD      (HL),A
  258.         LD      A,L
  259.         AND     %00011111
  260.         CP      %00011111
  261.         JR      NC,PUTSP6
  262.         LD      A,C
  263.         INC     L
  264. PTSPD2  OR      (HL)
  265.         LD      (HL),A
  266.         INC     DE
  267.         POP     BC
  268.         DJNZ    PUTSP1
  269. PUTSP3  POP     HL
  270.         INC     H
  271.         DEC     C
  272.         JR      NZ,PUTSP2
  273. RETPSP  POP$
  274.         RET
  275. PUTSP6  POP     BC
  276. PUTSP7  INC     DE
  277.         DJNZ    PUTSP7
  278.         JR      PUTSP3
  279.  
  280. BCOORD  LD      A,D ;de(0-191,0-31) -- hl
  281.         RRCA
  282.         RRCA
  283.         RRCA
  284.         AND     %00011000
  285.         LD      H,A
  286.         LD      A,D
  287.         AND     %00000111
  288.         ADD     A,H
  289. BCOSCR  ADD     A,%01000000
  290.         LD      H,A
  291.         LD      A,D
  292.         RLA
  293.         RLA
  294.         AND     %11100000
  295.         OR      E
  296.         LD      L,A
  297.         RET
  298.  
  299. PUTSCR  PUSH$   ;(de)--(hl)(0-191,0-31):b*c
  300.         LD      A,31
  301.         SUB     L
  302.         JR      C,RETPTS
  303.         INC     A
  304.         CP      B
  305.         JR      C,PUTSCB
  306.         LD      A,B
  307. PUTSCB  SUB     B
  308.         NEG
  309.         LD      (PUTSC4+1),A
  310.         SUB     B
  311.         NEG
  312.         LD      (PUTSC2+1),A
  313. PUTSC2  LD      B,0
  314.         LD      A,H
  315.         CP      %11000000
  316.         JR      NC,RETPTS
  317.         PUSH    HL
  318.         PUSH    DE
  319.         EX      DE,HL
  320.         CALL    BCOORD
  321.         POP     DE
  322. PUTSC1  LD      A,(DE)
  323. PUTSCD  OR      (HL)
  324.         LD      (HL),A
  325.         INC     DE
  326.         INC     L
  327.         DJNZ    PUTSC1
  328. PUTSC4  LD      HL,0
  329.         ADD     HL,DE
  330.         EX      DE,HL
  331.         POP     HL
  332.         INC     H
  333.         DEC     C
  334.         JR      NZ,PUTSC2
  335. RETPTS  POP$
  336.         RET
  337.  
  338. SCOORD  LD      A,D ;de(0-23,0-31)--hl
  339.         AND     %00011000
  340. SCOSCR  ADD     A,%01000000
  341.         LD      H,A
  342.         LD      A,D
  343.         RRCA
  344.         RRCA
  345.         RRCA
  346.         AND     %11100000
  347.         OR      E
  348.         LD      L,A
  349.         RET
  350.  
  351. LINE    PUSH$   ; line from p1(l,h) to p2(e,d)
  352.         PUSH    IX
  353.         LD      IX,DATA01
  354.         LD      B,#15
  355.         LD      C,#1D
  356.         LD      A,E
  357.         SUB     L
  358.         JR      NC,M1LIN
  359.         NEG
  360.         EX      DE,HL
  361. M1LIN   LD      L,A
  362.         LD      A,D
  363.         SUB     H
  364.         JR      NC,M2LIN
  365.         NEG
  366.         DEC     B
  367. M2LIN   LD      H,A
  368.         CP      L
  369.         JR      C,M3LIN
  370.         LD      A,B
  371.         LD      B,C
  372.         LD      C,A
  373.         LD      A,H
  374.         LD      H,L
  375.         LD      L,A
  376. M3LIN   LD      A,B
  377.         LD      (DEPENC),A
  378.         LD      A,C
  379.         LD      (INDEPC),A
  380.         PUSH    DE
  381.         LD      C,L
  382.         LD      E,L
  383.         LD      L,H
  384.         CALL    DIVB
  385.         LD      A,E
  386.         LD      (SIMLIN+1),A
  387.         LD      L,C
  388.         LD      A,L
  389.         LD      (LDLIN+1),A
  390.         LD      A,D
  391.         LD      (DECLIN+1),A
  392.         OR      A
  393.         LD      B,E
  394.         RR      B
  395.         INC     B
  396.         OR      A
  397.         RR      C
  398.         POP     DE
  399.         INC     L
  400.         JR      L4LIN
  401. SIMLIN  LD      B,#FF
  402. L4LIN   PUSH    HL
  403.         CALL    DOT
  404.         POP     HL
  405. INDEPC  DEC     D
  406.         DEC     L
  407.         JR      Z,RETLIN
  408.         LD      A,C
  409. DECLIN  SUB     #02
  410.         LD      C,A
  411.         JR      C,LDLIN
  412.         DJNZ    L4LIN
  413. DEPENC  DEC     E
  414.         JR      SIMLIN
  415. LDLIN   ADD     A,#FF
  416.         LD      C,A
  417.         JR      L4LIN
  418. RETLIN  POP     IX
  419.         POP$
  420.         RET
  421.  
  422. PCOORD  LD      A,D ;de(0-191,0-255) -- hl
  423.         RRCA
  424.         RRCA
  425.         RRCA
  426.         LD      L,A
  427.         AND     %00011000
  428.         LD      H,A
  429.         LD      A,D
  430.         AND     %00000111
  431.         ADD     A,H
  432. PCOSCR  ADD     A,%01000000
  433.         LD      H,A
  434.         LD      A,L
  435.         LD      L,E
  436.         RRA
  437.         RR      L
  438.         RRA
  439.         RR      L
  440.         RRA
  441.         RR      L
  442.         RET
  443.  
  444. DATA01  DEFB    128,64,32,16,8,4,2,1
  445. OUTBT   OR      (HL)
  446.         LD      (HL),A
  447.         RET
  448.  
  449. DOT     LD      A,D  ;POINT(X:=E,Y:=D)
  450.         CP      %11000000
  451.         RET     NC
  452.         LD      A,E
  453.         AND     %00000111
  454.         LD      (DCDOT+2),A
  455.         CALL    PCOORD
  456. DCDOT   LD      A,(IX+0)
  457. DOTREG  OR      (HL)
  458.         LD      (HL),A
  459.         RET
  460.  
  461. CHNGRG  LD      (OUTBT),A
  462.         LD      (PUTSCD),A
  463.         LD      (DOTREG),A
  464.         LD      (PTSPD1),A
  465.         LD      (PTSPD2),A
  466.         LD      (PUTSID),A
  467.         LD      (PRINCD),A
  468.         RET
  469.  
  470. PLOT    PUSH    IX ;*********PLOT E,D
  471.         PUSH    HL
  472.         LD      IX,DATA01
  473.         CALL    DOT
  474.         POP     HL
  475.         POP     IX
  476.         RET
  477.  
  478. ;MATHEMATICAL LIBRARY  MATH-ZX
  479. FREE16  DEFS    16
  480. MULB2   PUSH    HL       ;HL*E--DE  (C)
  481.         JR      MULENT
  482. MULB    PUSH    HL       ;L*E--DE
  483.         LD      H,0
  484. MULENT  LD      A,E
  485.         LD      E,0
  486.         LD      D,E
  487.         JR      MMULB2
  488. MMULB1  ADD     HL,HL
  489.         JR      C,ENDMUL
  490. MMULB2  OR      A
  491.         JR      Z,ENDMUL
  492.         RRA
  493.         JR      NC,MMULB1
  494.         EX      DE,HL
  495.         ADD     HL,DE
  496.         EX      DE,HL
  497.         JR      MMULB1
  498. ENDMUL  POP     HL
  499.         RET
  500. MUL     PUSH    HL ;HL*DE--DE
  501.         XOR     A
  502.         OR      D
  503.         JR      Z,MULENT
  504.         EX      DE,HL
  505.         XOR     A
  506.         OR      D
  507.         JR      Z,MULENT
  508.         SCF
  509.         POP     HL
  510.         RET
  511. DIVB    LD      D,0 ;E/L--E (MOD in D)
  512. DIVB2   PUSH    HL ;DE/L--E
  513.         PUSH    BC
  514.         LD      B,8
  515.         EX      DE,HL
  516.         LD      D,E
  517.         LD      E,0
  518. DIV1B   OR      A
  519.         RR      D
  520.         RR      E
  521.         SBC     HL,DE
  522.         JR      NC,MDIVB
  523.         ADD     HL,DE
  524. MDIVB   RLA
  525.         DJNZ    DIV1B
  526.         CPL
  527.         LD      D,L
  528.         LD      E,A
  529.         POP     BC
  530.         POP     HL
  531.         RET
  532.  
  533. SYMBOL  PUSH    HL;in L -sym.code
  534.         LD      H,L
  535.         LD      L,#21
  536.         LD      (PRIN8),HL
  537.         CALL    PRINT
  538.         LD      HL,#266E
  539.         LD      (PRIN8),HL
  540.         POP     HL
  541.         RET
  542.  
  543. ATRBAR  PUSH    HL; A -ATTR
  544.         LD      H,A
  545.         LD      L,#3E
  546.         LD      (PUTAT3),HL
  547.         POP     HL
  548.         CALL    PUTATR
  549.         PUSH    HL
  550.         LD      HL,#131A
  551.         LD      (PUTAT3),HL
  552.         POP     HL
  553.         RET
  554.  
  555. SIMBAR  PUSH    HL
  556.         LD      H,A ; A-filled byte
  557.         LD      L,#3E
  558.         LD      (PUTSI3),HL
  559.         POP     HL
  560.         CALL    PUTSIM
  561.         PUSH    HL
  562.         LD      HL,#131A
  563.         LD      (PUTSI3),HL
  564.         POP     HL
  565.         RET
  566. ; GrLib end
  567. ATR$    MAC
  568.         LD      HL,=0
  569.         LD      BC,=1
  570.         LD      A,=2
  571.         CALL    ATRBAR
  572.         ENDM
  573. BYT$    MAC
  574.         LD      HL,=0
  575.         LD      BC,=1
  576.         LD      A,=2
  577.         CALL    SIMBAR
  578.         ENDM
  579. SYM$    MAC
  580.         LD      DE,=0
  581.         LD      A,=1
  582.         LD      L,=2
  583.         CALL    SYMBOL
  584.         ENDM
  585. CHN$    MAC
  586.         LD      A,=0
  587.         CALL    CHNGRG
  588.         ENDM
  589.  
  590.