Rev 1863 | Show entire file | Regard whitespace | Details | Blame | Last modification | View Log
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 |