?login_element?

Subversion Repositories NedoOS

Rev

Rev 1863 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log | RSS feed

Rev 1863 Rev 2039
Line 691... Line 691...
691
       
691
       
692
loadapp
692
loadapp
693
;out: nz=error, cy=end of .bat, or else e=id
693
;out: nz=error, cy=end of .bat, or else e=id
694
        ld hl,cmdbuf
694
        ld hl,cmdbuf
695
        ld de,wordbuf
695
        ld de,wordbuf
-
 
696
        push de
696
        call getword
697
        call getword
697
;учесть путь в имени (TODO использовать OS_OPENHANDLE)
698
;учесть путь в имени (TODO использовать OS_OPENHANDLE)
698
        ld hl,wordbuf
699
        pop hl ;ld hl,wordbuf
699
        push hl
700
        push hl
700
        call findlastslash. ;de=after last slash or beginning of path
701
        call findlastslash. ;de=after last slash or beginning of path
701
        pop hl
702
        pop hl
702
 
703
 
703
        ;push hl
704
        ;push hl
Line 716... Line 717...
716
        cp 'b'
717
        cp 'b'
717
; TODO где проверка на остальные буквы?
718
; TODO где проверка на остальные буквы?
718
        jp z,strcpexec_tryrun_bat
719
        jp z,strcpexec_tryrun_bat
719
;считаем, что написано .com (в принципе расширение безразлично - просто запускаем)
720
;считаем, что написано .com (в принципе расширение безразлично - просто запускаем)
720
        jr loadapp_finddotok1
721
        jr loadapp_finddotok1
-
 
722
 
721
loadapp_nodot
723
loadapp_nodot
-
 
724
;TODO или сначала проверять bat, потом com?
722
;a=0
725
;a=0
723
        ld (hl),'.'
726
        ld (hl),'.'
724
        inc hl
727
        inc hl
725
        ld (exthlpointer),hl
728
        ld (exthlpointer),hl
726
        ld (hl),'c'
729
        ld (hl),'c'
Line 787... Line 790...
787
       endif
790
       endif
788
        pop af
791
        pop af
789
        ret
792
        ret
790
exthlpointer
793
exthlpointer
791
        dw 0000
794
        dw 0000
792
        dw 0000    
795
        ;dw 0000    
793
 
796
 
794
readapp
797
readapp
795
        ld a,b
798
        ld a,b
796
        ld (curhandle),a
799
        ld (curhandle),a
797
       
800
       
Line 879... Line 882...
879
;open .bat
882
;open .bat
880
;filename in wordbuf
883
;filename in wordbuf
881
        ld de,wordbuf ;pop de
884
        ld de,wordbuf ;pop de
882
        OS_OPENHANDLE
885
        OS_OPENHANDLE
883
        or a
886
        or a
-
 
887
        ret nz ;jp nz,execcmd_error ;NC!
884
        ld a,b
888
        ld a,b
885
        ld (curbathandle),a    
889
        ld (curbathandle),a
886
        ret nz ;jp nz,execcmd_error ;NC!
-
 
887
       
890
       
888
         ld a,0x3c ;"inc a"
891
         ld a,0x3c ;"inc a"
889
         ld (readbyte_readbuf_last),a
892
         ld (readbyte_readbuf_last),a
890
        ld iy,file_buf_end
893
        ld iy,file_buf_end
891
strcpexec_tryrun_bat0
894
strcpexec_tryrun_bat0
Line 978... Line 981...
978
        ld b,0
981
        ld b,0
979
        ld de,file_buf
982
        ld de,file_buf
980
        push de
983
        push de
981
        ld hl,128
984
        ld hl,128
982
        OS_READHANDLE
985
        OS_READHANDLE
-
 
986
        ;jr $
983
        pop iy
987
        pop iy
984
;HL = Number of bytes actually read, A=error
988
;HL = Number of bytes actually read, A=error
985
        ;sub 1
989
        ;sub 1
986
        ;sbc a,a ;error=0 => a=255, else a=0 (Z)
990
        ;sbc a,a ;error=0 => a=255, else a=0 (Z)
987
        ;jr z,readbyte_readbufq ;error (=>EOF)
991
        ;jr z,readbyte_readbufq ;error (=>EOF)
Line 1062... Line 1066...
1062
        ld hl,filinfo+FILINFO_LNAME
1066
        ld hl,filinfo+FILINFO_LNAME
1063
        ld a,(hl)
1067
        ld a,(hl)
1064
        or a
1068
        or a
1065
        jr nz,$+5
1069
        jr nz,$+5
1066
        ld hl,filinfo+FILINFO_FNAME
1070
        ld hl,filinfo+FILINFO_FNAME
1067
        ;ld c,0 ;c=x
1071
        ;ld c,0 ;c=x???
1068
        call prtext
1072
        call prtext
1069
;c=x
1073
;c=x???
1070
       
-
 
1071
        call prcrlf
1074
        call prcrlf
1072
       pop bc ;nfiles
1075
       pop bc ;nfiles
1073
        inc bc ;nfiles
1076
        inc bc ;nfiles
1074
        or a
1077
        or a
1075
        jr cmd_dir2_0
1078
        jr cmd_dir2_0
Line 1563... Line 1566...
1563
        ld hl,(execcmd_pars)
1566
        ld hl,(execcmd_pars)
1564
        ld a,(hl)
1567
        ld a,(hl)
1565
        or a
1568
        or a
1566
        jp z,cmd_error_nopars
1569
        jp z,cmd_error_nopars
1567
        ld de,wordbuf
1570
        ld de,wordbuf
-
 
1571
        push de
1568
        call getword ;hl=terminator/space addr
1572
        call getword ;hl=terminator/space addr
1569
 
-
 
1570
       if DEBUG
-
 
1571
        ld hl,wordbuf
-
 
1572
        ld c,0
-
 
1573
        call prtext
-
 
1574
        call prcrlf
-
 
1575
       endif
-
 
1576
 
-
 
1577
        ld de,wordbuf ;de=drive/path/file
1573
        pop de ;ld de,wordbuf ;de=drive/path/file
1578
        OS_OPENHANDLE
1574
        OS_OPENHANDLE
1579
        or a
1575
        or a
1580
        jp nz,cmd_error_wrongfile
1576
        jp nz,cmd_error_wrongfile
1581
        ld a,b
1577
        ld a,b
1582
        ld (close_file1_handle),a
1578
        ld (close_file1_handle),a
1583
        ld hl,close_file1
1579
        ld hl,close_file1
1584
        push hl
1580
        push hl      
1585
       
-
 
1586
cmd_type0
1581
cmd_type0
1587
;B = file handle, DE = Buffer address, HL = Number of bytes to read
1582
;B = file handle, DE = Buffer address, HL = Number of bytes to read
1588
        push bc
1583
        push bc
1589
        ld de,cmd_type_buf
1584
        ld de,cmd_type_buf
1590
        ld hl,1
1585
        ld hl,1
Line 1607... Line 1602...
1607
        ld hl,(execcmd_pars)
1602
        ld hl,(execcmd_pars)
1608
        ld a,(hl)
1603
        ld a,(hl)
1609
        or a
1604
        or a
1610
        jp z,cmd_error_nopars
1605
        jp z,cmd_error_nopars
1611
        ld de,wordbuf
1606
        ld de,wordbuf
-
 
1607
        push de
1612
        call getword ;hl=terminator/space addr
1608
        call getword ;hl=terminator/space addr
1613
 
-
 
1614
        ld de,wordbuf ;de=drive/path/file
1609
        pop de ;ld de,wordbuf ;de=drive/path/file
1615
        OS_CREATEHANDLE
1610
        OS_CREATEHANDLE
1616
        or a
1611
        or a
1617
        jp nz,cmd_error_wrongfile
1612
        jp nz,cmd_error_wrongfile
1618
        ld a,b
1613
        ld a,b
1619
        ld (close_file1_handle),a
1614
        ld (close_file1_handle),a
1620
        ld hl,close_file1
1615
        ld hl,close_file1
1621
        push hl
1616
        push hl
1622
       
-
 
1623
cmd_tee0
1617
cmd_tee0
1624
        push bc
1618
        push bc
1625
        GETKEY_
1619
        GETKEY_
1626
        ld (cmd_type_buf),a
1620
        ld (cmd_type_buf),a
1627
        pop bc
1621
        pop bc
Line 1634... Line 1628...
1634
        ld hl,1 ;TODO набивать буфер, потом писать много
1628
        ld hl,1 ;TODO набивать буфер, потом писать много
1635
        OS_WRITEHANDLE
1629
        OS_WRITEHANDLE
1636
;HL = Number of bytes actually written, A=error?
1630
;HL = Number of bytes actually written, A=error?
1637
        pop bc
1631
        pop bc
1638
        jr cmd_tee0
1632
        jr cmd_tee0
-
 
1633
 
1639
cmd_uname
1634
cmd_uname
1640
                ld hl,nedostr
1635
        ld hl,nedostr
1641
        call prtext
1636
        call prtext
1642
                OS_GETCONFIG
1637
        OS_GETCONFIG
1643
                push ix
1638
        push ix
1644
                pop de
1639
        pop de
1645
                ld h,b
1640
        ld h,b
1646
                ld l,c
1641
        ld l,c
1647
                call prdword_dehl
1642
        call prdword_dehl
1648
        call prcrlf
1643
        jp prcrlf
1649
                ret
-
 
1650
nedostr defb "NedoOS Kernel revision ",0
1644
nedostr defb "NedoOS Kernel revision ",0
1651
 
1645
 
1652
cmd_echo
1646
cmd_echo
1653
        ld hl,(execcmd_pars)
1647
        ld hl,(execcmd_pars)
1654
        call prtext
1648
        call prtext
Line 1657... Line 1651...
1657
cmd_pause
1651
cmd_pause
1658
        call getkey
1652
        call getkey
1659
        ld hl,(execcmd_pars)
1653
        ld hl,(execcmd_pars)
1660
                ld a,(hl)
1654
        ld a,(hl)
1661
        or a
1655
        or a
1662
        jp z,cmd_pause_infin
1656
        jr z,cmd_pause_infin
1663
                ld de,copybuf
1657
        ld de,copybuf
1664
                call strtobyte_hltode
1658
        call strtobyte_hltode
1665
                ld hl,(copybuf) ;умножаем на 48 интов в секунде
1659
        ld hl,(copybuf) ;умножаем на 50 интов в секунде
-
 
1660
        ld d,h
1666
                add hl,hl
1661
        ld e,l
1667
                add hl,hl
1662
        add hl,hl
-
 
1663
        add hl,de
1668
                add hl,hl
1664
        add hl,hl
1669
                add hl,hl
1665
        add hl,hl
1670
                ld d,h
-
 
1671
                ld e,l
-
 
1672
                add hl,hl
1666
        add hl,hl
1673
                add hl,de
1667
        add hl,de
-
 
1668
        add hl,hl
1674
                display "cmd_pause ",cmd_pause
1669
        ;display "cmd_pause ",cmd_pause
1675
cmd_pause_loop  ;ждем окончания счетчика, либо кнопку
1670
cmd_pause_loop  ;ждем окончания счетчика, либо кнопку
1676
                ld a,h
1671
        ld a,h
1677
                or l
1672
        or l
1678
                ret z
1673
        ret z
1679
                push hl
1674
        push hl
Line 1711... Line 1706...
1711
        ld hl,wordbuf
1706
        ld hl,wordbuf
1712
        call prtext
1707
        call prtext
1713
        ld a,'>'
1708
        ld a,'>'
1714
        PRCHAR_
1709
        PRCHAR_
1715
        ld hl,wordbuf2
1710
        ld hl,wordbuf2
-
 
1711
        push hl
1716
        call prtext
1712
        call prtext
1717
        call prcrlf
1713
        call prcrlf
1718
       
-
 
1719
        ld de,wordbuf2
1714
        pop de ;ld de,wordbuf2
1720
        OS_MKDIR
1715
        OS_MKDIR
1721
 
1716
 
1722
        ld bc,0 ;номер файла в директории
1717
        ld bc,0 ;номер файла в директории
1723
cmd_copydir0
1718
cmd_copydir0
1724
        push bc
1719
        push bc
Line 2091... Line 2086...
2091
printcurdir
2086
printcurdir
2092
        ld de,curdir__
2087
        ld de,curdir__
2093
        push de
2088
        push de
2094
        OS_GETPATH
2089
        OS_GETPATH
2095
        pop hl
2090
        pop hl
2096
        ld c,0
2091
        ;ld c,0
2097
        call prtext
2092
        call prtext
2098
        call prcrlf
2093
        jp prcrlf
2099
        ret
-
 
2100
 
2094
 
2101
curdir__
2095
curdir__
2102
        ds 256
2096
        ds 256
2103
        endif
2097
        endif
2104
 
2098