?login_element?

Subversion Repositories NedoOS

Rev

Rev 574 | Rev 598 | 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.         ld e,6 ;textmode
  12.         OS_SETGFX
  13.         ;call initstdio
  14.  
  15. ;TODO найти копию себя в памяти и закрыть её
  16. ;а как заглушить музыку, если не опрашивать клаву?
  17. ;если опрашивать, то нужен терминал
  18. ;можно было бы в nv.ext прописать cmd.com start term.com player.com, но такие конструкции пока не поддержаны ни в nv, ни в term
  19. ;поэтому пока без терминала
  20.        
  21.         OS_GETMAINPAGES
  22.         ld a,e
  23.         ld (musicpage),a
  24.        
  25.         ld hl,wasplayer
  26.         ld de,0x4000
  27.         ld bc,szplayer
  28.         ldir
  29.        
  30.         ld hl,COMMANDLINE ;command line
  31.         call skipword
  32.         call skipspaces
  33.         ld a,(hl)
  34.         or a
  35.         jr z,noautoload
  36.         ld (filenameaddr),hl
  37. ;command line = "texted <file to load>"
  38.         ;ld (texted_filenameaddr),hl
  39.         ex de,hl ;de=drive/path/file
  40.         OS_OPENHANDLE
  41. ;b=new file handle
  42.  
  43.         ld de,module;0xc000
  44.         ld hl,0xffff&(-module);0x4000
  45. ;B = file handle, DE = Buffer address, HL = Number of bytes to read
  46.         push bc
  47.         OS_READHANDLE
  48.         pop bc
  49.  
  50. ;B = file handle
  51.         OS_CLOSEHANDLE
  52.        
  53.         ld a,(module)
  54.         cp 'V'
  55.         jr z,$+4
  56.         cp 'P' ;'P'/'V' for PT3
  57.         ld a,%00100000 ;PT3
  58.         jr z,$+4
  59.         ld a,%00000010 ;PT2
  60.         ld (SETUP),a
  61.        
  62.         ld hl,module
  63.         ld a,(hl)
  64.         cp 'T'
  65.         push af
  66.         call nz,INIT
  67.         pop af
  68.         call z,tfmini
  69.  
  70. musicpage=$+1
  71.          ld a,0
  72.          ld hl,player
  73.          OS_SETMUSIC
  74.          
  75. mainloopredraw
  76.         ld e,COLOR
  77.         OS_CLS
  78. filenameaddr=$+1
  79.         ld hl,0
  80.         call prtext
  81.         ld a,0x0d
  82.         PRCHAR
  83.         ld a,0x0a
  84.         PRCHAR
  85.        
  86. mainloop
  87.         YIELD
  88.         ;di ;TODO fix player
  89.         ;call player
  90.         ;ei
  91.         GET_KEY
  92.       cp key_redraw
  93.       jr z,mainloopredraw
  94.         ;or a ;cp NOKEY ;keylang==0?
  95.         ;jr nz,$+2+1+2
  96.         ;cp c ;keynolang==0?
  97.         ;jr z,_1;1b;prwindow_waitkey_nokey
  98.         cp key_esc
  99.         jr nz,mainloop
  100.        
  101.           ld a,(musicpage)
  102.           ld hl,muter
  103.           OS_SETMUSIC
  104.           halt
  105. noautoload
  106.         QUIT
  107.  
  108. skipword
  109. ;hl=string
  110. ;out: hl=terminator/space addr
  111. getword0
  112.         ld a,(hl)
  113.         or a
  114.         ret z
  115.         cp ' '
  116.         ret z
  117.         inc hl
  118.         jr getword0
  119.  
  120. skipspaces
  121. ;hl=string
  122. ;out: hl=after last space
  123.         ld a,(hl)
  124.         cp ' '
  125.         ret nz
  126.         inc hl
  127.         jr skipspaces
  128.  
  129. prtext
  130. ;out: hl=after terminator
  131. prtext0
  132.         ld a,(hl)
  133.         inc hl
  134.         or a
  135.         ret z
  136.         push hl
  137.         PRCHAR
  138.         pop hl
  139.         jp prtext0
  140.  
  141.        
  142. ;oldtimer
  143. ;        dw 0
  144.  
  145.         ;include "../_sdk/stdio.asm"
  146.  
  147.         ;ds 0x4000-$
  148. wasplayer
  149.         disp 0x4000
  150. player
  151.         di
  152.         ld a,(module)
  153.         cp 'T'
  154.         push af
  155.         call nz,PLAY
  156.         pop af
  157.         call z,tfm
  158.         ei
  159.         ret
  160. muter        
  161.         ld a,(module)
  162.         cp 'T'
  163.         push af
  164.         call nz,MUTE
  165.         pop af
  166.         call z,tfmshut
  167.         ret
  168.  
  169.         include "ptsplay.asm"
  170.         include "tfmplay.asm"
  171.         ent
  172. szplayer=$-wasplayer
  173.        
  174. cmd_end
  175.  
  176.         display "Size ",/d,cmd_end-cmd_begin," bytes"
  177.  
  178.         savebin "player.com",cmd_begin,cmd_end-cmd_begin
  179.        
  180.         ;LABELSLIST "../us/user.l"
  181.