?login_element?

Subversion Repositories NedoOS

Rev

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. ;COMMANDLINE    EQU #80
  4.  
  5.         org PROGSTART
  6. cmd_begin
  7.  
  8.  
  9.                 ld hl,COMMANDLINE
  10.         call skipword
  11.         call skipspaces
  12.         ld (par1addr),hl
  13.                 ld de,FILE_NAME
  14.                 call getname
  15.                 inc hl
  16.                 ld (hl),0
  17.  
  18. ;               ld a,0
  19. ;               ld (de),a
  20. ;               jr $
  21.  
  22.         ld de,FILE_NAME
  23.         OS_CREATEHANDLE
  24.         or a
  25.         jp nz,ERR_EXIT    ;обработка ошибок
  26.         ld a,b
  27.         ld (handle),a    ;сохраняем дескриптор
  28.  
  29. ;Заполняю пустотой внутренний мир файла
  30.                 ld      b,160
  31. t1:             push bc
  32.         ld a,(handle)
  33.         ld b,a
  34.         ld de,Empt
  35.         ld hl,4096
  36.         OS_WRITEHANDLE
  37.         or a
  38.         jp nz,ERR_EXIT    ;обработка ошибок
  39.                 pop bc
  40.  
  41.                 djnz t1
  42.  
  43. ;Ищу в нем своё место
  44.                 ld a, (handle)
  45.                 ld b,a
  46.                 ld de,#0000
  47.                 ld hl,#0800
  48.                 OS_SEEKHANDLE
  49.  
  50. ;и заполняю его смыслом
  51.         ld a,(handle)
  52.         ld b,a
  53.         ld de, SYSTEM_TRACK
  54.         ld hl,BUF_SIZE
  55.         OS_WRITEHANDLE
  56.         or a
  57.         jp nz,ERR_EXIT    ;обработка ошибок
  58.  
  59. CLOSE_ERR_EXIT
  60.         ld a,(handle)
  61.         ld b,a
  62.         OS_CLOSEHANDLE
  63.  
  64. ERR_EXIT
  65.         QUIT
  66.  
  67. skipword
  68. ;hl=string
  69. ;out: hl=terminator/space addr
  70. getword0
  71.         ld a,(hl)
  72.         or a
  73.         ret z
  74.                 cp 0x20
  75.                 ret z
  76.         inc hl
  77.         jr getword0
  78.  
  79. skipspaces
  80. ;hl=string
  81. ;out: hl=after last space
  82.         ld a,(hl)
  83.         cp ' '
  84.         ret nz
  85.         inc hl
  86.         jr skipspaces
  87.  
  88. getname:
  89.         ld a,(hl)
  90.                 cp 0
  91.                 ret z
  92.         cp ' '
  93.         ret z
  94.                 ld (de),a
  95.         inc hl
  96.                 inc de
  97.         jr getname
  98.                
  99. handle:
  100.            DEFB 0
  101.  
  102. ;Ну проще я не придумал :-(
  103. ;Придумаю переделаю.
  104. Empt:
  105.         DEFS 16*256
  106.  
  107. SYSTEM_TRACK:;системная дорожка
  108.  
  109. BUFF_ADDR:
  110.                 DEFB 0
  111. DCU_SEC:
  112.                 DEFS 224
  113. FR_SEC_NEXT:;следующий свободный сектор
  114.                 DEFB 0
  115. FR_TRK_NEXT:;следующая свободная дорожка
  116.                 DEFB 1
  117. TYPE_DISC:; тип диска
  118.                 DEFB #10
  119. N_FILES:; количество файлов на диске            
  120.                 DEFB 0
  121. ; количество свободных секторов на диске
  122. ;(это максимальное количество, будем из него вычитать)
  123. N_FREE_SEC:
  124.                 DEFW #09F0
  125. MAIN_BYTE:
  126.                 DEFB #10
  127. ZERO:  
  128.                 DEFB 0,0
  129. BLANK9:
  130.                 DEFB #20,#20,#20,#20,#20,#20,#20,#20,#20,0; последний ноль нужен!
  131. N_DEL_FILES:
  132.                 DEFB 0
  133. ;заголовок диска
  134. DISC_TITLE:
  135.                 DEFB "RESULT",0,0
  136. ZERO_N:
  137.                 DEFS 3
  138. BUF_SIZE EQU $-SYSTEM_TRACK
  139.  
  140. FILE_NAME:
  141.         DEFB "dist.trd"
  142. END:    DEFB 0
  143.                 DEFB 0
  144. par1addr:
  145.                 DEFB 0
  146. par2addr:
  147.                 DEFB 0         
  148. cmd_end
  149.  
  150.  
  151.         ;display "Size ",/d,cmd_end-cmd_begin," bytes"
  152.  
  153.         savebin "mktrd.com",cmd_begin,cmd_end-cmd_begin
  154.  
  155.         LABELSLIST "../../us/user.l"
  156.