?login_element?

Subversion Repositories NedoOS

Rev

Rev 417 | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1. ;******** "ЧЁРНЫЙ ВОРОН" - МОДУЛЬ ИНСТРУКЦИИ ********
  2. ;пока не работает - TODO
  3. ;лежит в 4000+
  4. FONT42
  5.         incbin "data/wnf1.fnt"
  6.         incbin "data/wnf2.fnt"
  7.  
  8. WTR     EI
  9.         HALT
  10.         HALT
  11.         DI
  12.         RET
  13.  
  14. WT      RLCA
  15.         ADD     A,L
  16.         LD      L,A
  17.         JR      NC,JA_
  18.         INC     H
  19. JA_     LD      A,(HL)
  20.         INC HL
  21.         LD H,(HL)
  22.         LD L,A
  23.         RET
  24.  
  25. PIC_T   DEFW PICbeg,PIC1,PIC2
  26. DLPPIC  ;A-N экр
  27.         PUSH AF
  28.         LD DE,#4000
  29.         LD HL,PIC_T
  30.         CALL WT
  31.         INC HL
  32.         INC HL
  33.         CALL DELPZ
  34.         POP AF
  35.         CALL ATRIB
  36.         CALL SW5
  37.         CALL MEM7
  38.         CALL COPY
  39. SW70    CALL SW7
  40.         JP MEM0
  41.  
  42. ATR_T   DEFB #69,#28,#39
  43. ATRIB   PUSH AF
  44.         LD HL,ATR_T
  45.         CALL BA
  46.         LD HL,#5800
  47.         LD (HL),A
  48.         LD DE,#5801
  49.         LD BC,#2FF
  50.         LDIR
  51.         POP AF
  52.         OR A
  53.         RET NZ
  54.         LD HL,#58A0 ;для текста
  55.         LD DE,#58A1
  56.         LD BC,#23F
  57.         LD (HL),#44
  58.         LDIR
  59.         JP TEXT
  60.  
  61. KEYS    ;0-none ;1..5 - <1>..<5> ;6-<A> ;7-<Q> ;8-<E>;9-<O>;10-<P>
  62.         LD BC,#F7FE
  63.         IN A,(C)
  64.         CPL
  65.         AND %11111
  66.         JR Z,K768
  67.         LD C,1
  68.         RRA
  69.         JR C,K1_5
  70.         INC C
  71.         RRA
  72.         JR C,K1_5
  73.         INC C
  74.         RRA
  75.         JR C,K1_5
  76.         INC C
  77.         RRA
  78.         JR C,K1_5
  79.         INC C
  80. K1_5    LD A,C
  81.         OR A
  82.         RET
  83. K768    LD B,#FD
  84.         IN A,(C)
  85.         RRA
  86.         JR C,K78
  87.         LD A,6
  88.         OR A
  89.         RET
  90. K78     LD B,#FB
  91.         IN A,(C)
  92.         RRA
  93.         JR C,K8
  94.         LD A,7
  95.         OR A
  96.         RET
  97. K8      RRA
  98.         RRA
  99.         JR C,Kop
  100.         LD A,8
  101.         OR A
  102.         RET
  103. Kop     LD B,#DF
  104.         IN A,(C)
  105.         RRA
  106.         JR C,K10
  107.         LD A,9
  108.         OR A
  109.         RET
  110. K10     RRA
  111.         JR C,Knon
  112.         LD A,10
  113.         OR A
  114.         RET
  115. Knon    XOR A
  116.         RET
  117.  
  118. WAIT    CALL KEYS
  119.         JR NZ,WAIT
  120.         LD BC,#88
  121. WA2     DEC BC
  122.         LD A,C
  123.         OR B
  124.         JR NZ,WA2
  125.         RET
  126.  
  127. ;===========================
  128.  
  129. bINSTR 
  130.         CALL SW70
  131. XI00    XOR A
  132.         OUT (#FE),A
  133.         CALL DLPPIC
  134. XI0     CALL TEXT
  135. XI1     CALL COPY18
  136. XI2     CALL KEYS
  137.         JR Z,XI2
  138.         CP 6
  139.         JR NC,XI3
  140.         CP 3
  141.         JR NC,XI2
  142.         CALL DLPPIC
  143.         CALL WAIT
  144.         CALL WTR
  145.         CALL OFFS
  146.         JR XI00
  147. XI3     CP 7
  148.         JR Z,XI4
  149.         JR C,XI5
  150.         CP 9
  151.         JR Z,XI8
  152.         JR NC,XI9
  153.         ;CALL MEM7
  154.         ;CALL OFFS
  155.         ;CALL OFFD
  156.         ;CALL MEM0
  157.         ;JP bFLAG
  158.         jp press_quit
  159.  
  160. XI4     CALL PgUp
  161.         JR XI0
  162. XI5     CALL PgDwn
  163.         JR XI0
  164. XI9     CALL LnUp
  165.         LD HL,(TXT1)
  166.         LD DE,Instr
  167.         XOR A
  168.         SBC HL,DE
  169.         JR Z,XI0
  170.         CALL _UP18
  171.         CALL TEXT1
  172.         JR XI1
  173.  
  174. XI8     CALL LnDwn
  175.         CALL _DW18
  176.         LD B,22-5
  177.         LD HL,(TXT1)
  178. XD2     LD A,(HL)
  179.         INC HL
  180.         CP 127
  181.         JR Z,XI1
  182.         CP 126
  183.         JR NZ,XD2
  184.         DJNZ XD2
  185.         LD DE,(TXT1)
  186.         PUSH DE
  187.         LD (TXT1),HL
  188.         CALL TEXTe
  189.         POP HL
  190.         LD (TXT1),HL
  191.         JP XI1
  192.  
  193. LnUp    LD B,2
  194.         JR _Up
  195. PgUp    LD B,24-5
  196. _Up     LD HL,(TXT1)
  197.         LD DE,Instr
  198. PU1     LD A,L
  199.         CP E
  200.         JR NZ,PU0
  201.         LD A,H
  202.         CP D
  203.         JR NZ,PU0
  204.         LD (TXT1),DE
  205.         RET
  206. PU0     DEC HL
  207.         LD A,(HL)
  208.         CP 126
  209.         JR NZ,PU1
  210.         DJNZ PU1
  211.         INC HL
  212.         LD (TXT1),HL
  213.         RET
  214.  
  215. LnDwn   LD B,1
  216.         JR _Dwn
  217. PgDwn   LD B,23-5
  218. _Dwn    LD HL,(TXT1)
  219. PD1     LD A,(HL)
  220.         INC HL
  221.         CP 127
  222.         RET Z
  223.         CP 126
  224.         JR NZ,PD1
  225.         DJNZ PD1
  226.         LD (TXT1),HL
  227.         RET
  228.  
  229. WORDHL  LD      (TXT),HL
  230. WORD    LD      HL,(TXT)
  231.         LD      A,(HL)
  232.         INC     HL
  233.         LD      (TXT),HL
  234.         CP      #80
  235.         JR      NC,Compr
  236.         CP      #7E
  237.         RET     NC
  238.         CALL    LETTER
  239.         JR      WORD
  240. Compr   AND     #7F
  241.         LD HL,INCMPR
  242.         CALL WT
  243.         PUSH HL
  244.         LD A,L
  245.         CALL LETTER
  246.         POP HL
  247.         LD A,H
  248.         CALL LETTER
  249.         JR WORD
  250.  
  251. LETTER  OR A
  252.         JR Z,W2
  253.         LD      L,A
  254.         LD      H,0
  255. ;       LD      A,(SY)
  256. ;       CP      24
  257. ;       JR      NC,W2
  258.         ADD     HL,HL
  259.         ADD     HL,HL
  260.         ADD     HL,HL
  261.         LD      BC,FONT42
  262.         ADD     HL,BC
  263.         PUSH    HL
  264.         LD A,(SY)
  265.         LD HL,YT
  266.         CALL WT
  267.         EX DE,HL
  268.         LD A,(SX)
  269.         LD C,A
  270.         LD HL,XDT
  271.         CALL BA
  272.         LD L,A
  273.         LD H,0
  274.         ADD HL,DE
  275.         POP     DE
  276.         LD B,8
  277.         LD A,C
  278.         AND 3
  279.         JP Z,L00
  280.         CP 2
  281.         JP Z,L04
  282.         JP C,L06
  283.         JP L02
  284. W2      LD      A,(SX)
  285.         INC     A
  286.         CP      42
  287.         JR      C,W3
  288.         XOR     A
  289. W3      LD      (SX),A
  290.         RET
  291.  
  292. YT      DEFW #4000,#4020,#4040,#4060,#4080,#40A0,#40C0,#40E0
  293.         DEFW #4800,#4820,#4840,#4860,#4880,#48A0,#48C0,#48E0
  294.         DEFW #5000,#5020,#5040,#5060,#5080,#50A0,#50C0,#50E0
  295.  
  296. L00     LD A,(DE)
  297.         LD (HL),A
  298.         INC H
  299.         INC DE
  300.         DJNZ L00
  301.         JP W2
  302.  
  303. L02     LD A,(DE)
  304.         RRCA
  305.         RRCA
  306.         LD C,A
  307.         AND %111111
  308.         OR (HL)
  309.         LD (HL),A
  310.         INC L
  311.         LD A,C
  312.         AND %11000000
  313.         OR (HL)
  314.         LD (HL),A
  315.         DEC L
  316.         INC H
  317.         INC DE
  318.         DJNZ L02
  319.         JP W2
  320.  
  321. L04     LD A,(DE)
  322.         RRCA
  323.         RRCA
  324.         RRCA
  325.         RRCA
  326.         LD C,A
  327.         AND %1111
  328.         OR (HL)
  329.         LD (HL),A
  330.         INC L
  331.         LD A,C
  332.         AND %11110000
  333.         OR (HL)
  334.         LD (HL),A
  335.         DEC L
  336.         INC H
  337.         INC DE
  338.         DJNZ L04
  339.         JP W2
  340.  
  341. L06     LD A,(DE)
  342.         RLCA
  343.         RLCA
  344.         LD C,A
  345.         AND %11
  346.         OR (HL)
  347.         LD (HL),A
  348.         INC L
  349.         LD A,C
  350.         AND %11111100
  351.         OR (HL)
  352.         LD (HL),A
  353.         DEC L
  354.         INC H
  355.         INC DE
  356.         DJNZ L06
  357.         JP W2
  358.  
  359. TEXT1   LD HL,#500
  360.         LD A,6
  361.         JR _TEXT
  362.  
  363. TEXTe   LD HL,#1600
  364.         LD A,23
  365.         JR _TEXT
  366.  
  367. TEXT    CALL _OFF18
  368.         LD HL,#500
  369.         LD A,23
  370. _TEXT   LD (TXE+1),A
  371.         LD      (SX),HL  ;выв.текста
  372.         LD HL,(TXT1)
  373.         LD (TXT),HL
  374. TT      CALL    WORD
  375.         RET NZ
  376.         LD      HL,(SX)
  377.         LD      L,0
  378.         INC     H
  379.         LD      (SX),HL
  380.         LD A,H
  381. TXE     CP 23
  382.         JR C,TT
  383.         RET
  384.  
  385. TXT1    DEFW Instr
  386. SX      DEFB 2
  387. SY      DEFB 1
  388. TXT     DEFW 1
  389.  
  390. XDT     DEFB 0,0,1,2,3,3,4,5,6,6,7,8,9,9,10,11,12,12
  391.         DEFB 13,14,15,15,16,17,18,18,19,20,21,21,22,23
  392.         DEFB 24,24,25,26,27,27,28,29,30,30,30,30
  393. INCMPR
  394.         incbin "data/winstrcm.dat"
  395.  
  396. COPY    CALL MEM7
  397.         LD HL,#4000
  398.         LD DE,SCR
  399.         LD BC,#1B00
  400.         LDIR
  401.         JP MEM0
  402.  
  403. COPY18  ;копир 18 строк
  404.         CALL MEM7
  405.         LD HL,#40A0
  406.         LD DE,#C0A0
  407.         LD B,3
  408.         CALL cpy_18
  409.         LD B,8
  410.         LD HL,#4800
  411.         LD DE,#C800
  412.         CALL cpy_18
  413.         LD B,7
  414.         LD HL,#5000
  415.         LD DE,#D000
  416.         CALL cpy_18
  417.         JP MEM0
  418.  
  419. cpy_18  PUSHs
  420.         LD A,8
  421. cpy1    PUSH HL
  422.         PUSH DE
  423.         LDI
  424.         LDI
  425.         LDI
  426.         LDI;0
  427.         LDI
  428.         LDI
  429.         LDI
  430.         LDI;1
  431.         LDI
  432.         LDI
  433.         LDI
  434.         LDI;2
  435.         LDI
  436.         LDI
  437.         LDI
  438.         LDI;3
  439.         LDI
  440.         LDI
  441.         LDI
  442.         LDI;4
  443.         LDI
  444.         LDI
  445.         LDI
  446.         LDI;5
  447.         LDI
  448.         LDI
  449.         LDI
  450.         LDI;6
  451.         LDI
  452.         LDI
  453.         LDI
  454.         LDI;7
  455.         POP DE
  456.         POP HL
  457.         INC H
  458.         INC D
  459.         DEC A
  460.         JR NZ,cpy1
  461.         POPs
  462.         LD A,E
  463.         ADD A,32
  464.         LD E,A
  465.         LD L,A
  466.         DJNZ cpy_18
  467.         RET
  468.  
  469. _OFF18  ;очист 18 строк
  470.         LD E,0
  471.         LD HL,#40A0
  472.         LD C,3
  473.         CALL off_18
  474.         LD C,8
  475.         LD HL,#4800
  476.         CALL off_18
  477.         LD C,7
  478.         LD HL,#5000
  479.         CALL off_18
  480.         JP MEM0
  481.  
  482. off_18  PUSH HL
  483.         LD B,8
  484. off1    PUSH HL
  485.         LD (HL),E ;
  486.         INC L
  487.         LD (HL),E
  488.         INC L
  489.         LD (HL),E
  490.         INC L
  491.         LD (HL),E
  492.         INC L
  493.         LD (HL),E ;
  494.         INC L
  495.         LD (HL),E
  496.         INC L
  497.         LD (HL),E
  498.         INC L
  499.         LD (HL),E
  500.         INC L
  501.         LD (HL),E ;
  502.         INC L
  503.         LD (HL),E
  504.         INC L
  505.         LD (HL),E
  506.         INC L
  507.         LD (HL),E
  508.         INC L
  509.         LD (HL),E ;
  510.         INC L
  511.         LD (HL),E
  512.         INC L
  513.         LD (HL),E
  514.         INC L
  515.         LD (HL),E
  516.         INC L
  517.         LD (HL),E ;
  518.         INC L
  519.         LD (HL),E
  520.         INC L
  521.         LD (HL),E
  522.         INC L
  523.         LD (HL),E
  524.         INC L
  525.         LD (HL),E ;
  526.         INC L
  527.         LD (HL),E
  528.         INC L
  529.         LD (HL),E
  530.         INC L
  531.         LD (HL),E
  532.         INC L
  533.         LD (HL),E ;
  534.         INC L
  535.         LD (HL),E
  536.         INC L
  537.         LD (HL),E
  538.         INC L
  539.         LD (HL),E
  540.         INC L
  541.         LD (HL),E ;
  542.         INC L
  543.         LD (HL),E
  544.         INC L
  545.         LD (HL),E
  546.         INC L
  547.         LD (HL),E
  548.         POP HL
  549.         INC H
  550.         DEC A
  551.         DJNZ off1
  552.         POP HL
  553.         LD A,L
  554.         ADD A,32
  555.         LD L,A
  556.         DEC C
  557.         JR NZ,off_18
  558.         RET
  559.  
  560. _DW18   LD DE,#40A0
  561.         LD HL,#40C0
  562.         LD B,18
  563. _U00    CALL MOVlin
  564.         LD A,E
  565.         ADD A,32
  566.         LD E,A
  567.         JR NC,_U01
  568.         LD A,D
  569.         ADD A,8
  570.         LD D,A
  571. _U01    LD A,L
  572.         ADD A,32
  573.         LD L,A
  574.         JR NC,_U02
  575.         LD A,H
  576.         ADD A,8
  577.         LD H,A
  578. _U02    DJNZ _U00
  579.         LD E,0
  580.         LD C,1
  581.         LD HL,#50C0
  582.         JP off_18
  583.  
  584. _UP18   LD DE,#50C0
  585.         LD HL,#50A0
  586.         LD B,18
  587. _D00    CALL MOVlin
  588.         LD A,E
  589.         SUB 32
  590.         LD E,A
  591.         JR NC,_D01
  592.         LD A,D
  593.         SUB 8
  594.         LD D,A
  595. _D01    LD A,L
  596.         SUB 32
  597.         LD L,A
  598.         JR NC,_D02
  599.         LD A,H
  600.         SUB 8
  601.         LD H,A
  602. _D02    DJNZ _D00
  603.         LD E,0
  604.         LD C,1
  605.         LD HL,#40A0
  606.         JP off_18
  607.  
  608.  
  609. MOVlin  PUSHs
  610.         LD A,8
  611. _MVLL   PUSH HL
  612.         PUSH DE
  613.         LDI
  614.         LDI
  615.         LDI
  616.         LDI;0
  617.         LDI
  618.         LDI
  619.         LDI
  620.         LDI;1
  621.         LDI
  622.         LDI
  623.         LDI
  624.         LDI;2
  625.         LDI
  626.         LDI
  627.         LDI
  628.         LDI;3
  629.         LDI
  630.         LDI
  631.         LDI
  632.         LDI;4
  633.         LDI
  634.         LDI
  635.         LDI
  636.         LDI;5
  637.         LDI
  638.         LDI
  639.         LDI
  640.         LDI;6
  641.         LDI
  642.         LDI
  643.         LDI
  644.         LDI;7
  645.         POP DE
  646.         POP HL
  647.         INC D
  648.         INC H
  649.         DEC A
  650.         JR NZ,_MVLL
  651.         POPs
  652.         RET
  653.  
  654.  
  655. PICbeg
  656.         incbin "data/winstr0.lpz"
  657. PIC1
  658.         incbin "data/winstr1.lpz"
  659. PIC2
  660.         incbin "data/winstr2.lpz"
  661.  
  662.  
  663. Instr
  664.         incbin "data/winstr.dat" ;текст зашифрован, оригинала нет, есть конвертор из оригинала на C, но не наоборот
  665.  
  666.