?login_element?

Subversion Repositories NedoOS

Rev

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

  1. scrbase=0x4000+4
  2. iconsscraddr=scrbase+25+(32*40)
  3. faceiconsscraddr=scrbase+(17*8*40)+1
  4. sprmaxwid=48;32
  5. sprmaxhgt=32
  6. scrwid=128+8;160 ;double pixels
  7. scrhgt=192;200
  8. INTSTACK=0x3f00
  9. tempsp=0x3f06 ;6 bytes for prspr
  10.  
  11.         ld sp,STACK
  12.         OS_HIDEFROMPARENT
  13.         ld e,3
  14.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  15.         ld e,0
  16.         OS_SETSCREEN
  17.         ld e,0 ;color byte
  18.         OS_CLS
  19.         ld e,1
  20.         OS_SETSCREEN
  21.         ld e,0 ;color byte
  22.         OS_CLS
  23.  
  24.         ld b,25
  25. waitcls0
  26.         push bc
  27.         YIELD
  28.         pop bc
  29.         djnz waitcls0 ;чтобы nv не затёр pg7
  30.  
  31.         ld de,file_path
  32.         OS_CHDIR
  33.  
  34.         OS_GETMAINPAGES
  35. ;dehl=pages in 0000,4000,8000,c000
  36.         ld a,e
  37.         ld (pgmain4000),a
  38.         ld a,h
  39.         ld (pgmain8000),a
  40.         ld a,l
  41.         ld (tpgs+0),a
  42.  
  43.         ;OS_GETSCREENPAGES
  44. ;de=страницы 0-го экрана (d=старшая), hl=страницы 1-го экрана (h=старшая)
  45.         ld a,(user_scr1_high) ;ok
  46.        if 0;EGA
  47.          ;ld (scrpg7),a
  48.        else
  49.          ld (getttexpgs_basepg7),a
  50.        endif
  51.  
  52.         OS_NEWPAGE
  53.         ld a,e
  54.         ld (tpgs+6),a
  55.  
  56.         ld hl,texfilename
  57.         ;ld b,ntexfilenames
  58. getttexpgs0
  59.         ;push bc
  60.         ld a,(hl)
  61.         or a
  62.         ld a,(tpgs+0) ;не перезахватываем 0-ю страницу
  63.         jr z,getttexpgs7
  64.         ld a,(hl)
  65.        if 1;EGA==0
  66.         cp 7
  67. getttexpgs_basepg7=$+1
  68.         ld a,0
  69.         jr z,getttexpgs7
  70.        endif
  71.         push de
  72.         push hl
  73.         OS_NEWPAGE
  74.         ld a,e
  75.         pop hl
  76.         pop de
  77. getttexpgs7
  78.         ld c,(hl)
  79.         ld b,tpgs/256
  80.         ld (bc),a
  81.         inc hl
  82.         push hl
  83.         SETPGC000
  84.  
  85.         ld a,(hl)
  86.         cp ' '
  87.         jr nc,gettexpgs_noskipdata
  88.         inc hl
  89. gettexpgs_noskipdata
  90.         ex de,hl
  91.         push af
  92.         OS_OPENHANDLE
  93.         pop af ;CY=skip data, a=number of 8Ks to skip
  94.         jr nc,gettexpgs_noskipdata2
  95.         push bc
  96.         ld de,0
  97.         ld hl,0
  98.         rra
  99.         rr h
  100.         rra
  101.         rr h
  102.         rra
  103.         rr h
  104.         OS_SEEKHANDLE ;dehl=offset
  105.         pop bc
  106. gettexpgs_noskipdata2
  107.         push bc
  108.         ld de,0xc000 ;addr
  109.         ld hl,0x4000 ;size
  110.         OS_READHANDLE
  111.         pop bc
  112.         OS_CLOSEHANDLE
  113.  
  114.         pop hl
  115.         ld b,1
  116.         xor a
  117.         cpir ;after 0
  118.         ;pop bc
  119.         ld a,(hl)
  120.         inc a
  121.         jr nz,getttexpgs0
  122.        
  123.        if 0
  124.         ld e,0
  125.         OS_SETGFX ;e=0:EGA, e=2:MC, e=3:6912, e=6:text ;+SET FOCUS ;e=-1: disable gfx (out: e=old gfxmode)
  126.  
  127.         call setpgsscr40008000 ;включили страницы экрана
  128.         ld a,8
  129.         call setpg
  130.  
  131.         ld iy,0xc004;human_0
  132.         ld e,50 ;e=x = -(sprmaxwid-1)..159 (кодируется как x+(sprmaxwid-1))
  133.         ld c,50 ;c=y = -(sprmaxhgt-1)..199 (кодируется как есть)
  134.         call prspr
  135.  
  136.         call setpgsmain40008000 ;включили страницы программы в 4000,8000, как было
  137.         call changescrpg ;с этого момента (точнее, с прерывания) можем видеть, что нарисовали
  138.         jr $
  139.        endif
  140.         jp JP_ST
  141.  
  142.         align 256
  143. tpgs
  144.         ds 64
  145.  
  146. quit
  147.         ld hl,0 ;result
  148.         QUIT
  149.  
  150. PT128   LD      A,6;Cтандартная страница
  151.         JR      MEM
  152.  
  153. MEM7    LD      A,7
  154. MEM     OR      %11011000
  155. _128    ;LD     BC,#7FFD
  156.         ;OUT    (C),A
  157.         and 7
  158. setpg
  159.         ld b,tpgs/256
  160.         ld c,a
  161.         ld a,(bc)
  162.         SETPGC000
  163.         RET
  164.  
  165. LODmlz  LD HL,#4000 ;c компр
  166.         ;CALL WT
  167. ;WT
  168.         RLCA
  169.         ADD     A,L
  170.         LD      L,A
  171.         JR      NC,wWT_
  172.         INC     H
  173. wWT_    LD      A,(HL)
  174.         INC     HL
  175.         LD      H,(HL)
  176.         LD      L,A
  177.         ;RET
  178.         XOR A
  179.         CALL MEM
  180.         ;JP DELPC
  181.  
  182. ;DEC40
  183.         include "unmegalz.asm"
  184.  
  185. SEED    DEFW 1 ;счётчик
  186.  
  187. prtile
  188.         ;ret
  189. ;de=gfx
  190.         ld h,tmask/256
  191. ;h=tmask/256
  192. ;bc=scr
  193. ;hx=hgt
  194. ;4000,8000,6000,a000
  195.         push bc
  196.         call prtilepp
  197.         pop bc
  198.         push bc
  199.         ld a,b
  200.         add a,0x40
  201.         ld b,a
  202.         call prtilepp
  203.         pop bc
  204.         push bc
  205.         set 5,b
  206.         call prtilepp
  207.         pop bc
  208.         ld a,b
  209.         add a,0x60
  210.         ld b,a
  211. prtilepp
  212.        push ix
  213. prtile0
  214.         LD A,(de)
  215.         INC e
  216.         LD L,A
  217.         LD A,(bc)
  218.         AND (HL)
  219.         OR L
  220.         LD (bc),A
  221.         ld a,c
  222.         add a,40
  223.         ld c,a
  224.         jr nc,$+3
  225.         inc b
  226.         dec hx
  227.         jr nz,prtile0
  228.        pop ix
  229.         ret
  230.  
  231.         align 256
  232. temptilebuf
  233.         ds 256
  234.         align 256
  235. tmask
  236.         incbin "tmask"
  237.  
  238.         include "xlib.asm"
  239.  
  240.         include "prspr.asm"
  241.         include "mem.asm"
  242.        
  243. ;curscrnum_int
  244. ;        db 0
  245.  
  246. file_path
  247.         db "ufo2",0
  248.  
  249. texfilename
  250.        if EGA
  251.         db 0,"ufo20ega.dat",0
  252.        else
  253.         db 0,"ufo20.dat",0
  254.        endif
  255.         db 1,"ufo21.dat",0
  256.         db 3,"ufo23.dat",0
  257.         db 4,"ufo24.dat",0
  258.         ;db 6,"br6.dat",0
  259.         db 7,"ufo27.dat",0
  260.         db 8,"ufospr1.dat",0
  261.         db 9,"ufospr2.dat",0
  262.         ;db 10,"ufospr3.dat",0
  263.         ;db 11,"ufospr4.dat",0
  264.         ;db 12,"ufospr5.dat",0
  265.         db 13,"ufoxm11a.dat",0
  266.         db 14,"ufoxm11b.dat",0
  267.         db 15,"ufomuz1.bin",0
  268.         db 16,"ufomuz2.bin",0
  269.         db 17,"ufomuz3.bin",0
  270.         db 18,"ufomuz4.bin",0
  271.         db 19,"ufomuz5.bin",0
  272.         ;if EGA==0
  273. ;ntexfilenames=5
  274.         ;else
  275.         ;endif
  276.         db -1
  277.  
  278.         include "int.asm"
  279.  
  280. findsprfilename
  281. ;a=#=1..74
  282.         ld hl,sprfilenames
  283. findsprfilename0
  284.         dec a
  285.         ret z
  286.         push af
  287.         xor a
  288.         ld b,a
  289.         ld c,a
  290.         cpir ;hl=после 0
  291.         pop af
  292.         jr findsprfilename0
  293.  
  294. sprfilenames
  295.         DEFB "xm2.dat",0;       0,0 ;#1 (m2)
  296.         DEFB "xm3.dat",0;       1,150 ;#2 (m3)
  297.         DEFB "xm4.dat",0;       3,49 ;#3 (m4)
  298.         DEFB "xm5.dat",0;       7,5 ;#4 (m5)
  299.         DEFB "xm10.dat",0;      10,247 ;#5 (m10)
  300.         DEFB "xm7.dat",0;       14,152 ;#6 (m7)
  301.         DEFB "xm8.dat",0;       19,133 ;#7 (m8)
  302.         DEFB "xm9.dat",0;       22,169 ;#8 (m9)
  303.         DEFB "xm6.dat",0;       26,94 ;#9 (m6)
  304.         DEFB "xm11.dat",0;      29,173 ;#10 (m11)
  305.         DEFB "xm12.dat",0;      33,58 ;#11 (m12)
  306.         DEFB "xm13.dat",0;      37,213 ;#12 (m13)
  307.         DEFB "xm14.dat",0;      42,77 ;#13 (m14)
  308.         DEFB "xm15.dat",0;      44,11 ;#14 (m15)
  309.         DEFB "xm16.dat",0;      45,217 ;#15 (m16)
  310.         DEFB "xm17.dat",0;      47,209 ;#16 (m17)
  311.         DEFB "xm18.dat",0;      49,120 ;#17 (m18)
  312.         DEFB "xm19.dat",0;      51,58 ;#18 (m19)
  313.         DEFB "xm20.dat",0;      53,29 ;#19 (m20)
  314.         DEFB "XL2.LND",0;       54,198 ;#20 (l2)
  315.         DEFB "end.bin",0;       56,127 ;#21 (end)
  316.         DEFB "XL3.LND",0;       62,199 ;#22 (l3)
  317.         DEFB "XL4.LND",0;               64,84 ;#23 (l4)
  318.         DEFB "XL5A.LND",0;              66,26 ;#24 (l5a)
  319.         DEFB "XL5B.LND",0;              67,244 ;#25 (l5b)
  320.         DEFB "XL5C.LND",0;              69,154 ;#26 (l5c)
  321.         DEFB "XL5D.LND",0;              71,94 ;#27 (l5d)
  322.         DEFB "XL6A.LND",0;              72,247 ;#28 (l6a)
  323.         DEFB "XL6B.LND",0;              75,7 ;#29 (l6b)
  324.         DEFB "XL6C.LND",0;              77,43 ;#30 (l6c)
  325.         DEFB "XL6D.LND",0;              79,58 ;#31 (l6d)
  326.         DEFB "x2.bin",0;                81,67 ;#32 (X2) ;???
  327.         DEFB "XL7.LND",0;       81,71 ;#33 (l7)
  328.         DEFB "XL8A.LND",0;      83,32 ;#34 (l8a)
  329.         DEFB "XL8B.LND",0;      84,248 ;#35 (l8b)
  330.         DEFB "XL8C.LND",0;      86,214 ;#36 (l8c)
  331.         DEFB "XL8D.LND",0;      88,174 ;#37 (l8d)
  332.         DEFB "XL9.LND",0;       90,128 ;#38 (l9)
  333.         DEFB "x3.bin",0;        92,99 ;#39 (X3)
  334.         DEFB "XL10A.LND",0;     92,103 ;#40 (l10a)
  335.         DEFB "XL10B.LND",0;     93,141 ;#41 (l10b)
  336.         DEFB "XL10C.LND",0;     94,179 ;#42 (l10c)
  337.         DEFB "XL10D.LND",0;     95,225 ;#43 (l10d)
  338.         DEFB "XL11.LND",0;      97,14 ;#44 (l11)
  339.         DEFB "XL12.LND",0;      98,210 ;#45 (l12)
  340.         DEFB "XL13.LND",0;      100,74 ;#46 (l13)
  341.         DEFB "XL14.LND",0;      102,38 ;#47 (l14)
  342.         DEFB "XL15.LND",0;      103,88 ;#48 (l15)
  343.         DEFB "XL19.LND",0;      105,16 ;#49 (l19)
  344.         DEFB "XL17.LND",0;      105,217 ;#50 (l17)
  345.         DEFB "XL18.LND",0;      107,46 ;#51 (l18)
  346.         DEFB "XL16.LND",0;      108,109 ;#52 (l16)
  347.         DEFB "XL20.LND",0;      109,188 ;#53 (l20)
  348.         DEFB "up1.bin",0;       111,18 ;#54 (up1) ;???
  349.         DEFB "up2.bin",0;       116,94 ;#55 (up2)
  350.         DEFB "up3.bin",0;       121,183 ;#56 (up3)
  351.         DEFB "up4.bin",0;       127,21 ;#57 (up4)
  352.         DEFB "up5.bin",0;       131,62 ;#58 (up5)
  353.         DEFB "up6.bin",0;       138,99 ;#59 (up6)
  354.         DEFB "up7.bin",0;       150,43 ;#60 (up7)
  355.         DEFB "up8.bin",0;       161,37 ;#61 (up8)
  356.         DEFB "up9.bin",0;       172,200 ;#62 (up9)
  357.         DEFB "up10.bin",0;      184,174 ;#63 (up10)
  358.         DEFB "up11.bin",0;      191,192 ;#64 (up11)
  359.         DEFB "up12.bin",0;      202,114 ;#65 (up12)
  360.         DEFB "up13.bin",0;      206,254 ;#66 (up13)
  361.         DEFB "up14.bin",0;      211,239 ;#67 (up14)
  362.         DEFB "up15.bin",0;      217,97 ;#68 (up15)
  363.         DEFB "up16.bin",0;      225,4 ;#69 (up16)
  364.         DEFB "up17.bin",0;      231,142 ;#70 (up17)
  365.         DEFB "up18.bin",0;      238,185 ;#71 (up18)
  366.         DEFB "up19.bin",0;      249,150 ;#72 (up19)
  367.         DEFB "up20.bin",0;      3,246 ;#73 (up20)
  368.         DEFB "theend.bin",0;    15,13 ;the end
  369.  
  370.