?login_element?

Subversion Repositories NedoOS

Rev

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

  1. ;*Z80
  2. *O
  3. ;*L-
  4. *M-
  5. ;*D-
  6. ;******** МОДУЛЬ ИНСТРУКЦИИ ДЛЯ НЛО-2********
  7. *P7
  8.         ORG #DB00
  9. PIC3
  10. *B ..\DATA\XN3.DTA
  11. PIC2
  12. *B ..\DATA\XN2.DTA
  13. PIC4
  14. *B ..\DATA\XN4.DTA
  15.         DEFS 300,222
  16.         DEFM " DON'T TOUGHT ME NOW "
  17. PICbeg
  18. *B ..\DATA\XN5.DTA
  19.         DEFS 50,50
  20.  
  21. *L-
  22. *P0
  23.         ORG #7000
  24.         ENT $
  25.         DI
  26.         IM 1
  27.         XOR A
  28.         OUT (254),A
  29.         LD (SPSP+1),SP
  30.         LD SP,PIC1-4
  31.         JP START
  32.         DEFM " *** UFO-2 *** Instruction V1.0 ***"
  33.         DEFM " Made by Slava MEDNONOGOGV (C) 1996 ***"
  34.         DEFM " All right reserved ***  "
  35.         DEFM "   STACK STACK STACK STACK "
  36. PIC1
  37. *B ..\DATA\XN1.DTA
  38.  
  39. MEM0    LD A,%10011000
  40. MEM_    LD BC,#7FFD
  41.         OUT (C),A
  42.         RET
  43. MEM7    LD A,%01011111
  44.         JP MEM_
  45. MEMR    LD A,%10000
  46.         JR MEM_
  47.  
  48. FONT
  49. *B ..\DATA\XNF1.DTA
  50. *B ..\DATA\XNF2.DTA
  51.  
  52. WTR     EI
  53.         HALT
  54.         HALT
  55.         DI
  56.         RET
  57. ;Декомпрессор
  58. ;HL-откуда DE-куда
  59. DLPCB   DEFS 4
  60. DELPC   PUSH DE
  61.         LD DE,DLPCB
  62.         LD BC,4
  63.         LDIR
  64.         POP DE
  65. xpD0    LD A,(HL)
  66.         BIT 7,A
  67.         JR NZ,xpD1
  68.         PUSH AF
  69.         AND 1
  70.         LD B,A
  71.         LD A,(HL)
  72.         AND #E
  73.         RRCA
  74.         ADD A,3
  75.         LD C,A
  76. xpD0X   INC HL
  77.         LD A,E
  78.         SUB (HL)
  79.         INC HL
  80.         PUSH HL
  81.         LD L,A
  82.         LD A,D
  83.         SBC A,B
  84.         LD H,A
  85.         LD B,0
  86.         LDIR
  87. D00     POP HL
  88.         POP AF
  89.         RLCA
  90.         RLCA
  91.         RLCA
  92.         RLCA
  93.         AND #F
  94.         JR Z,xpD0
  95.         JR xpDRR
  96. xpD1    INC HL
  97.         BIT 6,A
  98.         JR NZ,xpD2
  99.         AND #3F
  100.         JR Z,xpDEND
  101. xpDRR   LD C,A
  102. xpDLO   LD A,(HL) ;неразрушающий
  103.         RRCA
  104.         LD (DE),A
  105.         INC DE
  106.         INC HL
  107.         DEC C
  108.         JP NZ,xpDLO
  109.         JR xpD0
  110. xpD2    AND #3F
  111.         ADD A,4
  112.         LD C,A
  113.         LD A,(HL)
  114.         PUSH AF
  115.         AND #F
  116.         LD B,A
  117.         JR xpD0X
  118. xpDEND  LD HL,DLPCB
  119.         LD C,4
  120.         LDIR
  121.         RET
  122.  
  123. WA      RLCA
  124. BA      ADD     A,L
  125.         LD      L,A
  126.         JR      NC,BA_
  127.         INC     H
  128. BA_     LD      A,(HL)
  129.         RET
  130.  
  131. WT      RLCA
  132.         ADD     A,L
  133.         LD      L,A
  134.         JR      NC,JA_
  135.         INC     H
  136. JA_     LD      A,(HL)
  137.         INC HL
  138.         LD H,(HL)
  139.         LD L,A
  140.         RET
  141.  
  142. PIC_T   DEFW PIC1,PIC2,PIC3,PIC4,PICbeg
  143. DLPPIC  ;A-N экр
  144.         PUSH AF
  145.         LD DE,#4000-17
  146.         LD HL,PIC_T
  147.         CALL WT
  148.         INC HL
  149.         INC HL
  150.         CALL MEM7
  151.         CALL DELPC
  152.         CALL OFFS
  153.         CALL COPY
  154.         POP AF
  155.         JP ATRIB
  156.  
  157. ATR_T   DEFB #38,#28,#60,#68,#61,#6
  158. ATRIB   LD HL,ATR_T
  159.         CALL BA
  160.         LD HL,#D800
  161.         LD (HL),A
  162.         LD DE,#D801
  163.         CALL MEM7
  164.         LD BC,#2FF
  165.         JR AC
  166.  
  167. SCR     EQU     #C000
  168. COPY    CALL    MEM7
  169.         LD HL,#4000
  170.         LD DE,SCR
  171.         LD BC,#1800
  172. AC      LDIR
  173.         RET
  174.  
  175. OFFD    LD (SPP+1),SP
  176.         LD SP,#5B00
  177.         JR OFF_
  178. OFFS    CALL    MEM7
  179.         LD (SPP+1),SP
  180.         LD SP,SCR+#1B00
  181. OFF_    LD DE,0
  182.         LD C,27
  183. OFFF    DEFS 128,#D5 ;256 PUSH DE
  184.         DEC C
  185.         JP NZ,OFFF
  186. SPP     LD SP,1111
  187.         RET
  188.  
  189. KEYS    ;0-none ;1..5 - <1>..<5> ;6-<A> ;7-<Q> ;8-<E>;9-<O>;10-<P>
  190.         LD BC,#F7FE
  191.         IN A,(C)
  192.         CPL
  193.         AND %11111
  194.         JR Z,K768
  195.         LD C,1
  196.         RRA
  197.         JR C,K1_5
  198.         INC C
  199.         RRA
  200.         JR C,K1_5
  201.         INC C
  202.         RRA
  203.         JR C,K1_5
  204.         INC C
  205.         RRA
  206.         JR C,K1_5
  207.         INC C
  208. K1_5    LD A,C
  209.         OR A
  210.         RET
  211. K768    LD B,#FD
  212.         IN A,(C)
  213.         RRA
  214.         JR C,K78
  215.         LD A,6
  216.         OR A
  217.         RET
  218. K78     LD B,#FB
  219.         IN A,(C)
  220.         RRA
  221.         JR C,K8
  222.         LD A,7
  223.         OR A
  224.         RET
  225. K8      RRA
  226.         RRA
  227.         JR C,Kop
  228.         LD A,8
  229.         OR A
  230.         RET
  231. Kop     LD B,#DF
  232.         IN A,(C)
  233.         RRA
  234.         JR C,K10
  235.         LD A,9
  236.         OR A
  237.         RET
  238. K10     RRA
  239.         JR C,Knon
  240.         LD A,10
  241.         OR A
  242.         RET
  243. Knon    XOR A
  244.         RET
  245.  
  246. WAIT    CALL KEYS
  247.         JR NZ,WAIT
  248.         LD BC,#88
  249. WA2     DEC BC
  250.         LD A,C
  251.         OR B
  252.         JR NZ,WA2
  253.         RET
  254.  
  255. START   LD A,4
  256.         CALL DLPPIC
  257. XI1     CALL KEYS
  258.         JR Z,XI1
  259.         CALL WAIT
  260.         CALL OFFS
  261. XI00    CALL MEM0
  262.         CALL OFFD
  263.         CALL TEXT
  264.         CALL OFFS
  265.         CALL COPY
  266.         LD A,5
  267.         CALL ATRIB
  268. XI0     CALL OFFD
  269.         CALL MEM0
  270.         CALL TEXT
  271.         CALL COPY
  272.         CALL MEM0
  273.         LD SP,#4004
  274. XI2     CALL KEYS
  275.         JR Z,XI2
  276.         LD SP,#5B34
  277.         CP 6
  278.         JR NC,XI3
  279.         DEC A
  280.         CALL DLPPIC
  281.         CALL WAIT
  282.         CALL WTR
  283.         JR XI00
  284. XI3     CP 7
  285.         JR Z,XI4
  286.         JR C,XI5
  287.         CP 9
  288.         JR Z,XI8
  289.         JR NC,XI9
  290.         CALL OFFS
  291.         CALL OFFD
  292.         CALL MEMR
  293. SPSP    LD SP,#5C00
  294.         RET
  295. XI4     CALL PgUp
  296.         JR XI0
  297. XI5     CALL PgDwn
  298.         JR XI0
  299. XI9     CALL LnUp
  300.         JR XI0
  301. XI8     CALL LnDwn
  302.         JR XI0
  303.  
  304. LnUp    LD B,2
  305.         JR _Up
  306. PgUp    LD B,24
  307. _Up     LD HL,(TXT1)
  308.         LD DE,Instr
  309. PU1     LD A,L
  310.         CP E
  311.         JR NZ,PU0
  312.         LD A,H
  313.         CP D
  314.         JR NZ,PU0
  315.         LD (TXT1),DE
  316.         RET
  317. PU0     DEC HL
  318.         LD A,(HL)
  319.         CP 126
  320.         JR NZ,PU1
  321.         DJNZ PU1
  322.         INC HL
  323.         LD (TXT1),HL
  324.         RET
  325.  
  326. LnDwn   LD B,1
  327.         JR _Dwn
  328. PgDwn   LD B,23
  329. _Dwn    LD HL,(TXT1)
  330. PD1     LD A,(HL)
  331.         INC HL
  332.         CP 127
  333.         RET Z
  334.         CP 126
  335.         JR NZ,PD1
  336.         DJNZ PD1
  337.         LD (TXT1),HL
  338.         RET
  339.  
  340. WORDHL  LD      (TXT),HL
  341. WORD    LD      HL,(TXT)
  342.         LD      A,(HL)
  343.         INC     HL
  344.         LD      (TXT),HL
  345.         CP      #80
  346.         JR      NC,Compr
  347.         CP      #7E
  348.         RET     NC
  349.         CALL    LETTER
  350.         JR      WORD
  351. Compr   AND     #7F
  352.         LD HL,INCMPR
  353.         CALL WT
  354.         PUSH HL
  355.         LD A,L
  356.         CALL LETTER
  357.         POP HL
  358.         LD A,H
  359.         CALL LETTER
  360.         JR WORD
  361.  
  362. LETTER  OR A
  363.         JR Z,W2
  364.         LD      L,A
  365.         LD      H,0
  366. ;       LD      A,(SY)
  367. ;       CP      24
  368. ;       JR      NC,W2
  369.         ADD     HL,HL
  370.         ADD     HL,HL
  371.         ADD     HL,HL
  372.         LD      BC,FONT
  373.         ADD     HL,BC
  374.         PUSH    HL
  375.         LD A,(SY)
  376.         LD HL,YT
  377.         CALL WT
  378.         EX DE,HL
  379.         LD A,(SX)
  380.         LD C,A
  381.         LD HL,XDT
  382.         CALL BA
  383.         LD L,A
  384.         LD H,0
  385.         ADD HL,DE
  386.         POP     DE
  387.         LD B,8
  388.         LD A,C
  389.         AND 3
  390.         JP Z,L00
  391.         CP 2
  392.         JP Z,L04
  393.         JP C,L06
  394.         JP L02
  395. W2      LD      A,(SX)
  396.         INC     A
  397.         CP      42
  398.         JR      C,W3
  399.         XOR     A
  400. W3      LD      (SX),A
  401.         RET
  402.  
  403. Instr
  404. *B      ..\DATA\XINSTR.DAT
  405.  
  406. YT      DEFW #4000,#4020,#4040,#4060,#4080,#40A0,#40C0,#40E0
  407.         DEFW #4800,#4820,#4840,#4860,#4880,#48A0,#48C0,#48E0
  408.         DEFW #5000,#5020,#5040,#5060,#5080,#50A0,#50C0,#50E0
  409.  
  410. L00     LD A,(DE)
  411.         LD (HL),A
  412.         INC H
  413.         INC DE
  414.         DJNZ L00
  415.         JP W2
  416.  
  417. L02     LD A,(DE)
  418.         RRCA
  419.         RRCA
  420.         LD C,A
  421.         AND %111111
  422.         OR (HL)
  423.         LD (HL),A
  424.         INC L
  425.         LD A,C
  426.         AND %11000000
  427.         OR (HL)
  428.         LD (HL),A
  429.         DEC L
  430.         INC H
  431.         INC DE
  432.         DJNZ L02
  433.         JP W2
  434.  
  435. L04     LD A,(DE)
  436.         RRCA
  437.         RRCA
  438.         RRCA
  439.         RRCA
  440.         LD C,A
  441.         AND %1111
  442.         OR (HL)
  443.         LD (HL),A
  444.         INC L
  445.         LD A,C
  446.         AND %11110000
  447.         OR (HL)
  448.         LD (HL),A
  449.         DEC L
  450.         INC H
  451.         INC DE
  452.         DJNZ L04
  453.         JP W2
  454.  
  455. L06     LD A,(DE)
  456.         RLCA
  457.         RLCA
  458.         LD C,A
  459.         AND %11
  460.         OR (HL)
  461.         LD (HL),A
  462.         INC L
  463.         LD A,C
  464.         AND %11111100
  465.         OR (HL)
  466.         LD (HL),A
  467.         DEC L
  468.         INC H
  469.         INC DE
  470.         DJNZ L06
  471.         JP W2
  472.  
  473. TEXT    LD HL,0
  474.         LD      (SX),HL  ;выв.текста
  475.         LD HL,(TXT1)
  476.         LD (TXT),HL
  477. TT      CALL    WORD
  478.         RET NZ
  479.         LD      HL,(SX)
  480.         LD      L,0
  481.         INC     H
  482.         LD      (SX),HL
  483.         LD A,H
  484.         CP 24
  485.         JR C,TT
  486.         RET
  487.  
  488. TXT1    DEFW Instr
  489. SX      DEFB 2
  490. SY      DEFB 1
  491. TXT     DEFW 1
  492.  
  493. XDT     DEFB 0,0,1,2,3,3,4,5,6,6,7,8,9,9,10,11,12,12
  494.         DEFB 13,14,15,15,16,17,18,18,19,20,21,21,22,23
  495.         DEFB 24,24,25,26,27,27,28,29,30,30,30,30
  496. INCMPR
  497. *B      ..\DATA\XINSTRCM.DAT
  498.  
  499.         DEFM "*** END OF DATA BLOCK ***"