?login_element?

Subversion Repositories NedoOS

Rev

Rev 598 | Rev 1514 | Go to most recent revision | Blame | Compare with Previous | Last modification | View Log | Download | RSS feed

  1.         DEVICE ZXSPECTRUM128
  2.         include "../_sdk/sys_h.asm"
  3.  
  4. COLOR=7
  5. module=0x6000;0xc000
  6.        
  7.                
  8.         org PROGSTART
  9. cmd_begin
  10.         ld sp,0x4000 ;не должен опускаться ниже #3b00! иначе возможна порча OS
  11.         OS_HIDEFROMPARENT
  12.         ld e,6 ;textmode
  13.         OS_SETGFX
  14.         ;call initstdio
  15.  
  16.         OS_GETMAINPAGES ;out: dehl=номера страниц в 0000,4000,8000,c000, c=flags, b=id
  17.         ld a,e
  18.         ld (musicpage),a
  19.         ld a,b
  20.         ld (myid),a
  21.         ;push hl
  22.         ;ld e,h
  23.         ;OS_DELPAGE
  24.         ;pop hl
  25.         ;ld e,l
  26.         ;OS_DELPAGE
  27.  
  28. ;TODO найти копию себя в памяти и послать ей 0 в COMMANDLINE
  29.         ld e,1 ;no id 0
  30. cmd_proc0
  31.         push de
  32.         ld a,e
  33. myid=$+1
  34.         cp 0
  35.         jr z,cmd_proc_skip
  36.         OS_GETAPPMAINPAGES ;out: d,e,h,l=pages in 0000,4000,8000,c000, c=flags, a=error
  37.         or a
  38.         jr nz,cmd_proc_skip
  39.         ld a,d ;main page
  40.         SETPG32KHIGH
  41.         ld de,COMMANDLINE+0xc000
  42.         ld hl,ttestdatacom
  43.         ld bc,ttestdatacom_sz
  44.         call teststr
  45.         jr z,cmd_proc_found
  46.         ld de,COMMANDLINE+0xc000
  47.         ld hl,ttestdata
  48.         ld bc,ttestdata_sz
  49.         call teststr
  50.         jr nz,cmd_proc_skip
  51. cmd_proc_found
  52.         xor a
  53.         ld (COMMANDLINE+0xc000),a ;ok ;"закройся"
  54. cmd_proc_skip
  55.         pop de
  56.         inc e
  57.         ld a,e
  58.         inc a ;no id 0xff
  59.         jr nz,cmd_proc0
  60.  
  61. ;а как заглушить музыку, если не опрашивать клаву?
  62. ;если опрашивать, то нужен терминал
  63. ;можно было бы в nv.ext прописать cmd.com start term.com player.com, но такие конструкции пока не поддержаны ни в nv, ни в term
  64. ;поэтому пока без терминала
  65.        
  66.         ld hl,wasplayer
  67.         ld de,0x4000
  68.         ld bc,szplayer
  69.         ldir
  70.        
  71.         ld hl,COMMANDLINE ;command line
  72.         call skipword
  73.         call skipspaces
  74.         ld a,(hl)
  75.         or a
  76.         jr z,noautoload
  77.         ld (filenameaddr),hl
  78. ;command line = "texted <file to load>"
  79.         ;ld (texted_filenameaddr),hl
  80.         ex de,hl ;de=drive/path/file
  81.         OS_OPENHANDLE
  82. ;b=new file handle
  83.  
  84.         ld de,module;0xc000
  85.         ld hl,0xffff&(-module);0x4000
  86. ;B = file handle, DE = Buffer address, HL = Number of bytes to read
  87.         push bc
  88.         OS_READHANDLE
  89.         pop bc
  90.  
  91. ;B = file handle
  92.         OS_CLOSEHANDLE
  93.        
  94.         ld a,(module)
  95.         cp 'V'
  96.         jr z,$+4
  97.         cp 'P' ;'P'/'V' for PT3
  98.         ld a,%00100000 ;PT3
  99.         jr z,$+4
  100.         ld a,%00000010 ;PT2
  101.         ld (SETUP),a
  102.        
  103.         ld hl,module
  104.         ld a,(hl)
  105.         cp 'T'
  106.         push af
  107.         call nz,INIT
  108.         pop af
  109.         call z,tfmini
  110.  
  111. musicpage=$+1
  112.          ld a,0
  113.          ld hl,player
  114.          OS_SETMUSIC
  115.          
  116. mainloopredraw
  117.         ld e,COLOR
  118.         OS_CLS
  119. filenameaddr=$+1
  120.         ld hl,0
  121.         call prtext
  122.         ld a,0x0d
  123.         PRCHAR
  124.         ld a,0x0a
  125.         PRCHAR
  126.        
  127. mainloop
  128.         YIELD
  129.         ;di ;TODO fix player
  130.         ;call player
  131.         ;ei
  132.         ld a,(COMMANDLINE) ;ok
  133.         or a
  134.         jr z,quit
  135.        
  136.         GET_KEY
  137.       cp key_redraw
  138.       jr z,mainloopredraw
  139.         ;or a ;cp NOKEY ;keylang==0?
  140.         ;jr nz,$+2+1+2
  141.         ;cp c ;keynolang==0?
  142.         ;jr z,_1;1b;prwindow_waitkey_nokey
  143.         cp key_esc
  144.         jr nz,mainloop
  145. quit
  146.           ld a,(musicpage)
  147.           ld hl,muter
  148.           OS_SETMUSIC
  149.           halt
  150. noautoload
  151.         QUIT
  152.  
  153. teststr
  154. testdata0
  155.         ld a,(de)
  156.         or 0x20
  157.         cp (hl)
  158.         ret nz ;jr nz,cmd_proc_skip
  159.         inc de
  160.         cpi
  161.         jp pe,testdata0
  162.         xor a
  163.         ret
  164.  
  165. ttestdatacom
  166.         db "player.com"
  167. ttestdatacom_sz=$-ttestdatacom
  168.  
  169. ttestdata
  170.         db "player "
  171. ttestdata_sz=$-ttestdata
  172.  
  173. skipword
  174. ;hl=string
  175. ;out: hl=terminator/space addr
  176. getword0
  177.         ld a,(hl)
  178.         or a
  179.         ret z
  180.         cp ' '
  181.         ret z
  182.         inc hl
  183.         jr getword0
  184.  
  185. skipspaces
  186. ;hl=string
  187. ;out: hl=after last space
  188.         ld a,(hl)
  189.         cp ' '
  190.         ret nz
  191.         inc hl
  192.         jr skipspaces
  193.  
  194. prtext
  195. ;out: hl=after terminator
  196. prtext0
  197.         ld a,(hl)
  198.         inc hl
  199.         or a
  200.         ret z
  201.         push hl
  202.         PRCHAR
  203.         pop hl
  204.         jp prtext0
  205.  
  206.        
  207. ;oldtimer
  208. ;        dw 0
  209.  
  210.         ;include "../_sdk/stdio.asm"
  211.  
  212.         ;ds 0x4000-$
  213. wasplayer
  214.         disp 0x4000
  215. player
  216. ;a = port bd77 value
  217.         di
  218.         push af
  219.         and 0xf7;0xa0;%10101000 ;320x200 mode noturbo
  220.         ld bc,0xbd77    ;shadow ports and palette remain on
  221.         out (c),a
  222.  
  223.         ld a,(module)
  224.         cp 'T'
  225.         push af
  226.         ;push de
  227.         call nz,PLAY
  228.         ;pop de
  229.         pop af
  230.         call z,tfm
  231.        
  232.         pop af
  233.         ;LD A,0xa8;%10101000 ;320x200 mode
  234.         ld bc,0xbd77    ;shadow ports and palette remain on
  235.         out (c),a
  236.         ei
  237.         ret
  238. muter        
  239.         ld a,(module)
  240.         cp 'T'
  241.         push af
  242.         call nz,MUTE
  243.         pop af
  244.         call z,tfmshut
  245.         ret
  246.  
  247.         include "ptsplay.asm"
  248.         include "tfmplay.asm"
  249.         ent
  250. szplayer=$-wasplayer
  251.        
  252. cmd_end
  253.  
  254.         display "Size ",/d,cmd_end-cmd_begin," bytes"
  255.  
  256.         savebin "player.com",cmd_begin,cmd_end-cmd_begin
  257.        
  258.         ;LABELSLIST "../us/user.l"
  259.