?login_element?

Subversion Repositories NedoOS

Rev

Blame | Last modification | View Log | Download

  1. ARWBUF  EQU #5BDC
  2.         ORG #6000
  3.         CALL INIMOUS
  4.         LD HL,#4000
  5.         LD DE,#4001
  6.         LD BC,#17FF
  7.         LD (HL),C
  8.         LDIR
  9.         CALL TROIKA
  10.         JR Z,$-3
  11.         RET
  12.  
  13.  
  14.  
  15. PRARW   LD BC,0
  16.         LD A,B
  17.         CALL 8881
  18.         LD (REW+1),HL
  19.         EX DE,HL
  20.         LD B,A
  21.         INC B
  22.        LD A,-1
  23.        ADD A,A
  24.         DJNZ $-1
  25.         LD (PRARWR-1),A
  26.         LD HL,SPRARW
  27.         LD IX,ARWBUF
  28.         LD B,12
  29. PRARW0  PUSH BC
  30.         LD C,(HL)
  31.         INC HL
  32.         LD B,(HL)
  33.         INC HL
  34.         LD A,(HL)
  35.         INC HL
  36.         PUSH HL
  37.         LD H,(HL)
  38.         LD L,A
  39.         PUSH DE
  40.         LD A,(DE)
  41.         LD (IX),A
  42.         LD E,A
  43.        SCF
  44.        SBC A,A
  45.         LD D,0
  46. PRARWR
  47.        RL C ;sli
  48.         RL B
  49.         RLA
  50.         ADD HL,HL
  51.         RL D
  52.         JR C,PRARWR
  53.         AND E
  54.         XOR D
  55.         POP DE
  56.         LD (DE),A
  57.         INC E
  58.         LD A,E
  59.         AND 31
  60.         LD A,(DE)
  61.         LD (IX+12),A
  62.         JR Z,PRARWN
  63.         AND B
  64.         XOR H
  65.         LD (DE),A
  66.         INC E
  67.         LD A,E
  68.         AND 31
  69.         JR Z,PRARWN-1
  70.         LD A,(DE)
  71.         LD (IX+24),A
  72.         AND C
  73.         XOR L
  74.         LD (DE),A
  75.         DEC E
  76. PRARWN  DEC E
  77.         CALL DDE
  78.         POP HL
  79.         POP BC
  80.         LD A,D
  81.         CP 88
  82.         RET NC
  83.         INC LX
  84.         INC HL
  85.         DJNZ PRARW0
  86.         RET
  87.  
  88. REW     LD DE,0
  89.         LD IX,ARWBUF
  90.         LD B,12
  91. REW0    LD A,(IX)
  92.         LD (DE),A
  93.         INC E
  94.         LD A,(IX+12)
  95.         LD (DE),A
  96.         INC E
  97.         LD A,E
  98.         AND 30
  99.         JR Z,REWN
  100.         LD A,(IX+24)
  101.         LD (DE),A
  102. REWN    DEC E
  103.         DEC E
  104.         CALL DDE
  105.         LD A,D
  106.         CP 88
  107.         RET NC
  108.         INC LX
  109.         DJNZ REW0
  110.         RET
  111.  
  112. INKEY   LD A,239
  113.         IN A,(-2)
  114.         RRCA
  115.         RLA
  116.         RLA
  117.         OR #C2
  118.         LD C,A
  119.         LD A,#DF
  120.         IN A,(-2)
  121.         RRA
  122.         JR C,$+4
  123.         RES 4,C
  124.         RRA
  125.         JR C,$+4
  126.         RES 5,C
  127.         LD A,-5
  128.         IN A,(-2)
  129.         RRA
  130.         JR C,$+4
  131.         RES 2,C
  132.         LD A,-3
  133.         IN A,(-2)
  134.         RRA
  135.         JR C,$+4
  136.         RES 3,C
  137.         LD A,-2
  138.         IN A,(-2)
  139.         RRA
  140.         JR C,$+4
  141.         RES 0,C
  142.         LD A,#7F
  143.         IN A,(-2)
  144.         CPL
  145.         AND 31
  146.         JR Z,$+4
  147.         RES 1,C
  148.         LD A,-6
  149. MOUSEF  IN A,(#DF)
  150.         RRA
  151.         JR C,$+4
  152.         RES 1,C
  153.         RRA
  154.         JR C,$+4
  155.         RES 0,C
  156. INKEYF  RET
  157.         RR C
  158.         EX AF,AF'
  159.        RR C
  160.        EX AF,AF'
  161.         RL C
  162.         EX AF,AF'
  163.        RL C
  164.        RET
  165.  
  166. MANAGE  CALL INKEY
  167.        LD HL,(PRARW+1)
  168. ARVEL   LD DE,0
  169.        LD A,C
  170. KEY     EQU $+1
  171.        CP 0
  172.        LD (KEY),A
  173.        RRA
  174.        RRA
  175.        CPL
  176.        JR NZ,MANTORM
  177.        AND 31
  178.        JR NZ,MANNOT
  179. MANTORM SRA D
  180.        INC D
  181.        JR Z,$+3
  182.        DEC D
  183.        SRA E
  184.        INC E
  185.        JR Z,$+3
  186.        DEC E
  187. MANNOT  RRA
  188.        JR NC,$+3
  189.        DEC D
  190.        RRA
  191.        JR NC,$+3
  192.        INC D
  193.        RRA
  194.        JR NC,$+3
  195.        INC E
  196.        RRA
  197.        JR NC,$+3
  198.        DEC E
  199.        LD A,D
  200.        CP 1
  201.        JR Z,MANYOK
  202.        CP -1
  203.        JR Z,MANYOK
  204.        INC A
  205.        JP P,$+4
  206.        INC A
  207.        SRA A
  208.        SRA A
  209.        JR Z,VEROK+1
  210. MANYOK  ADD A,H
  211.        CP 192
  212.        JR C,VEROK
  213.        XOR A
  214.        BIT 7,D
  215.        LD D,A
  216.        JR NZ,VEROK
  217.        LD A,191
  218. VEROK   LD H,A
  219.        LD A,E
  220.        CP 1
  221.        JR Z,MANXOK
  222.        CP -1
  223.        JR Z,MANXOK
  224.        INC A
  225.        JP P,$+4
  226.        INC A
  227.        SRA A
  228.        SRA A
  229.        JR Z,HOROK+1
  230. MANXOK  ADD A,L
  231.        BIT 7,E
  232.        JR Z,HORNOL
  233.        JR C,HOROK
  234.        XOR A
  235.        LD E,A
  236. HORNOL  JR NC,HOROK
  237.        XOR A
  238.        LD E,A
  239.        DEC A
  240. HOROK   LD L,A
  241.        LD (ARVEL+1),DE
  242.        LD (PRARW+1),HL
  243. MANAGEF LD A,-5
  244.        IN A,(#DF)
  245. OLDX    LD E,0
  246.        LD (OLDX+1),A
  247.        SUB E
  248.        JP P,MPX
  249.        ADD A,L
  250.        JR C,MXQ
  251.        XOR A
  252.        LD L,A
  253. MPX     ADD A,L
  254.        JR NC,$+3
  255.        SBC A,A
  256. MXQ     LD L,A
  257.        LD A,-1
  258.        IN A,(#DF)
  259. OLDY    LD D,0
  260.        LD (OLDY+1),A
  261.        SUB D
  262.        NEG
  263.        JP P,MPY
  264.        ADD A,H
  265.        JR C,MYQ
  266.        XOR A
  267.        LD H,A
  268. MPY     ADD A,H
  269.        LD H,191
  270.        CP H
  271.        JR NC,$+3
  272. MYQ     LD H,A
  273.        LD (PRARW+1),HL
  274.        RET
  275.  
  276. INIMOUS
  277.        EI
  278.        HALT
  279.        LD HL,#AA00
  280.        PUSH HL
  281.        POP DE
  282.        INC E
  283.        LD B,E,C,L
  284.        LD (HL),#A9
  285.        LD A,H
  286.        LDIR
  287.        DEC (HL)
  288.        LD HL,#C9AF
  289.        LD (#A9A8),HL
  290.        LD (#A8A9),HL
  291.        LD I,A
  292.        IM 2
  293.        EI
  294.        HALT
  295.        IM 1
  296.        EI
  297.        LD A,#80
  298.        OUT (127),A
  299.       ;IN A,(-1)
  300.       ;CP -1
  301.        JR NZ,INIMOFS
  302.       LD A,-1
  303.        IN A,(#DF)
  304.        LD (OLDY+1),A
  305.        LD B,A
  306.        LD A,-5
  307.        IN A,(#DF)
  308.        LD (OLDX+1),A
  309.        CP B
  310.        RET NZ
  311.        LD A,-6
  312.        IN A,(#DF)
  313.        CP B
  314.        RET NZ
  315. INIMOFS LD A,62
  316.        LD (MOUSEF),A
  317.        LD A,201
  318.        LD (MANAGEF),A
  319.        RET
  320.  
  321. TROIKA  CALL PRARW
  322.        CALL MANAGE
  323.        HALT
  324.        CALL REW
  325. TROIKAQ LD A,(KEY)
  326.        CPL
  327.        AND 3
  328.        RET
  329.  
  330. DDE     INC D
  331.        LD A,D
  332.        AND 7
  333.        RET NZ
  334.        LD A,E
  335.        ADD A,32
  336.        LD E,A
  337.        RET C
  338.        LD A,D
  339.        ADD A,-8
  340.        LD D,A
  341.        RET
  342.  
  343. SPRARW  DW #1FFF,0
  344.        DW #07FF,#6000
  345.        DW #01FF,#7800
  346.        DW #807F,#3E00
  347.        DW #803F,#3F80
  348.        DW #C07F,#1F00
  349.        DW #C07F,#1F00
  350.        DW #E03F,#0F80
  351.        DW #E01F,#09C0
  352.        DW #F60F,#00E0
  353.        DW #FF0F,#0060
  354.        DW #FF9F,#0000
  355.