diff --git a/pcbasic/basic/devices/disk.py b/pcbasic/basic/devices/disk.py index 2739f60f9..22c7ba80a 100644 --- a/pcbasic/basic/devices/disk.py +++ b/pcbasic/basic/devices/disk.py @@ -523,9 +523,14 @@ def _split_pathmask(self, dos_pathmask): def _get_dirs_files(self, native_path): """Get native filenames for native path.""" all_names = safe(os.listdir, native_path) - dirs = [n for n in all_names if os.path.isdir(os.path.join(native_path, n))] - fils = [n for n in all_names if not os.path.isdir(os.path.join(native_path, n))] - return dirs, fils + native_names = [os.path.join(native_path, _name) for _name in all_names] + dirs = [_name for _name in native_names if os.path.isdir(_name)] + files = [ + _name for _name in native_names + if os.path.exists(_name) + and not os.path.isdir(_name) + ] + return dirs, files def listdir(self, pathmask): """Get directory listing.""" diff --git a/tests/basic/gwbasic/AUTO_dot/DUMPSCRN.BAS b/tests/basic/gwbasic/AUTO_dot/DUMPSCRN.BAS new file mode 100644 index 000000000..d106c922b --- /dev/null +++ b/tests/basic/gwbasic/AUTO_dot/DUMPSCRN.BAS @@ -0,0 +1,12 @@ +10 ' dump text screen to file +1000 N$="output.txt" +1010 DEF SEG=&HB800 +1020 OPEN N$ FOR OUTPUT AS 1 +1030 FOR Y = 0 TO 24 +1040 FOR X = 0 TO 79 +1050 PRINT #1, CHR$(PEEK(2*(Y*80+X))); +1060 NEXT +1065 PRINT #1, "" +1070 NEXT +1080 CLOSE 1 + diff --git a/tests/basic/gwbasic/AUTO_dot/PCBASIC.INI b/tests/basic/gwbasic/AUTO_dot/PCBASIC.INI index 969beecc6..328ad5d62 100644 --- a/tests/basic/gwbasic/AUTO_dot/PCBASIC.INI +++ b/tests/basic/gwbasic/AUTO_dot/PCBASIC.INI @@ -2,4 +2,4 @@ font=default run=TEST.BAS soft-linefeed=True -keys=rem\r\x03list\rrun 1000\rsystem\r +keys=rem\r\x03list\rrun "dumpscrn"\rsystem\r diff --git a/tests/basic/gwbasic/AUTO_dot/TEST.BAS b/tests/basic/gwbasic/AUTO_dot/TEST.BAS index 55ee768b0..b60d7a799 100644 --- a/tests/basic/gwbasic/AUTO_dot/TEST.BAS +++ b/tests/basic/gwbasic/AUTO_dot/TEST.BAS @@ -1,13 +1,3 @@ 20 AUTO . 999 END -1000 N$="output.txt" ' RUN 1000 to dump screen -1010 DEF SEG=&HB800 -1020 OPEN N$ FOR OUTPUT AS 1 -1030 FOR Y = 0 TO 24 -1040 FOR X = 0 TO 79 -1050 PRINT #1, CHR$(PEEK(2*(Y*80+X))); -1060 NEXT -1065 PRINT #1, "" -1070 NEXT -1080 CLOSE 1  diff --git a/tests/basic/gwbasic/AUTO_dot/model/DUMPSCRN.BAS b/tests/basic/gwbasic/AUTO_dot/model/DUMPSCRN.BAS new file mode 100644 index 000000000..d106c922b --- /dev/null +++ b/tests/basic/gwbasic/AUTO_dot/model/DUMPSCRN.BAS @@ -0,0 +1,12 @@ +10 ' dump text screen to file +1000 N$="output.txt" +1010 DEF SEG=&HB800 +1020 OPEN N$ FOR OUTPUT AS 1 +1030 FOR Y = 0 TO 24 +1040 FOR X = 0 TO 79 +1050 PRINT #1, CHR$(PEEK(2*(Y*80+X))); +1060 NEXT +1065 PRINT #1, "" +1070 NEXT +1080 CLOSE 1 + diff --git a/tests/basic/gwbasic/AUTO_dot/model/OUTPUT.TXT b/tests/basic/gwbasic/AUTO_dot/model/OUTPUT.TXT index 7d66c9e89..a6b0e997e 100644 --- a/tests/basic/gwbasic/AUTO_dot/model/OUTPUT.TXT +++ b/tests/basic/gwbasic/AUTO_dot/model/OUTPUT.TXT @@ -1,21 +1,21 @@ -1080*rem -1090 +999*rem +1009 Ok˙ list 20 AUTO . -999 END -1000 N$="output.txt" ' RUN 1000 to dump screen -1010 DEF SEG=&HB800 -1020 OPEN N$ FOR OUTPUT AS 1 -1030 FOR Y = 0 TO 24 -1040 FOR X = 0 TO 79 -1050 PRINT #1, CHR$(PEEK(2*(Y*80+X))); -1060 NEXT -1065 PRINT #1, "" -1070 NEXT -1080 REM +999 REM Ok˙ -run 1000 +run "dumpscrn" + + + + + + + + + + diff --git a/tests/basic/gwbasic/dot_linenumber_empty_program/DUMPSCRN.BAS b/tests/basic/gwbasic/dot_linenumber_empty_program/DUMPSCRN.BAS new file mode 100644 index 000000000..d106c922b --- /dev/null +++ b/tests/basic/gwbasic/dot_linenumber_empty_program/DUMPSCRN.BAS @@ -0,0 +1,12 @@ +10 ' dump text screen to file +1000 N$="output.txt" +1010 DEF SEG=&HB800 +1020 OPEN N$ FOR OUTPUT AS 1 +1030 FOR Y = 0 TO 24 +1040 FOR X = 0 TO 79 +1050 PRINT #1, CHR$(PEEK(2*(Y*80+X))); +1060 NEXT +1065 PRINT #1, "" +1070 NEXT +1080 CLOSE 1 + diff --git a/tests/basic/gwbasic/dot_linenumber_empty_program/PCBASIC.INI b/tests/basic/gwbasic/dot_linenumber_empty_program/PCBASIC.INI new file mode 100644 index 000000000..02387c1de --- /dev/null +++ b/tests/basic/gwbasic/dot_linenumber_empty_program/PCBASIC.INI @@ -0,0 +1,4 @@ +[pcbasic] +font=default +soft-linefeed=True +keys=list .\rrenum .\redit .\rdelete .\rauto .\r\x03run "dumpscrn"\rsystem\r diff --git a/tests/basic/gwbasic/dot_linenumber_empty_program/TEST.BAS b/tests/basic/gwbasic/dot_linenumber_empty_program/TEST.BAS new file mode 100644 index 000000000..e69de29bb diff --git a/tests/basic/gwbasic/dot_linenumber_empty_program/model/OUTPUT.TXT b/tests/basic/gwbasic/dot_linenumber_empty_program/model/OUTPUT.TXT new file mode 100644 index 000000000..3e2ce3b41 --- /dev/null +++ b/tests/basic/gwbasic/dot_linenumber_empty_program/model/OUTPUT.TXT @@ -0,0 +1,26 @@ +Ok˙ +list . +Ok˙ +renum . +Ok˙ +edit . +Undefined line number˙ +Ok˙ +delete . +Illegal function call˙ +Ok˙ +auto . +0 +Ok˙ +run "dumpscrn" + + + + + + + + + + + \ No newline at end of file