File list sorted by timestamp.

260 views
Skip to first unread message

Peter Onion

unread,
Jun 5, 2025, 7:03:41 AM6/5/25
to RC2014-Z80
I miss being able to list files sorted by "newest last", so I've been working on a simple file directory listing program that does just that !

I decided writing it in C would be quite straight forward, so I decided to do it in assembler for more of a challenge, and to get experience with using some of the CP/M 3 features.

The hardest part has been getting an assembler version of quicksort working. 

My program is now working but still needs improvements such as checking that the disk has been set up for time stamping and taking a file search pattern.

PeterO


24/05/2025 19:58 FORMATE.MAC
24/05/2025 20:00 FORMATE.COM
24/05/2025 20:00 FORMATE.REL
24/05/2025 20:02 L80.COM
24/05/2025 20:02 M80.COM
24/05/2025 20:03 WRITEF.BAK
24/05/2025 20:03 WRITEF.MAC
25/05/2025 15:09 WRITEF.COM
26/05/2025 08:01 WRITEF.TXT
26/05/2025 10:30 WRITEF.PRN
26/05/2025 10:30 WRITEF.REL
26/05/2025 13:54 SAVE.COM
26/05/2025 13:54 SAVE.REL
26/05/2025 13:55 FRED.OLD
26/05/2025 17:59 TEST.BAK
26/05/2025 18:22 FRED.BAK
26/05/2025 18:22 FRED.TXT
27/05/2025 13:10 TEST.TXT
27/05/2025 17:08 F1.BAK
27/05/2025 17:11 F1.TXT
28/05/2025 22:13 SAVE.BAK
28/05/2025 22:21 SAVE.MAC
29/05/2025 09:26 CNVDAYS.BAK
29/05/2025 09:28 CNVDAYS.MAC
29/05/2025 09:28 CNVDAYS.REL
31/05/2025 07:35 LIST.PRN
05/06/2025 11:28 LIST.BAK
05/06/2025 11:30 LIST.COM
05/06/2025 11:30 LIST.MAC
05/06/2025 11:30 LIST.REL
11:51 J0>>

Mark Pruden

unread,
Jun 5, 2025, 10:29:38 AM6/5/25
to RC2014-Z80
Looks good, sorting by date is a feature I miss as well

I may have stated this before, but suggest you extend one of the existing directory listing tools. ZXD comes to mind. You get the benefit that it handles all the different date stamping types, not just CPM3, and already supports common options.

I am not sure the best source for it, but this repository has several versions of it, there is a large file in root directory , which if you search ZXD you will find different versions, and hopefully source code for it. 

https://oldcomputers.dyndns.org/public/pub/cdrom/walnut_creek_cdrom/index.html

Not sure where RomWBW got its version from ? 

Mark Pruden

unread,
Jun 5, 2025, 10:39:36 AM6/5/25
to RC2014-Z80

Peter Onion

unread,
Jun 5, 2025, 11:15:53 AM6/5/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 07:29 -0700, Mark Pruden wrote:
> Looks good, sorting by date is a feature I miss as well
>
> I may have stated this before, but suggest you extend one of the existing directory
> listing tools. ZXD comes to mind. You get the benefit that it handles all the different
> date stamping types, not just CPM3, and already supports common options.

Yes you did suggest it earlier Mark. I took a look at the sources for it at the time and
decided it was just too big to quickly get my head around.

So I decided to start from scratch so I could incrementally learn about one new thing at a
time. So now that I understand how CP/M 3 timestamps work and where they are stored, how
to compare them (needed for sorting), how to convert them into day/month/year for printing
AND have working quicksort code it may be the time to go back and have another look at
ZXD.

Actually it IS a good time because I've been trying to use BDOS function 152 to parse the
command tail an I've found it has some inconsistent behaviour when passed what I believe
should be invalid filenames such as "a[b]" and "a<b>".

PeterO
> --
> You received this message because you are subscribed to the Google Groups "RC2014-Z80"
> group.
> To unsubscribe from this group and stop receiving emails from it, send an email to
> rc2014-z80+...@googlegroups.com.
> To view this discussion, visit
> https://groups.google.com/d/msgid/rc2014-z80/7ed93297-c25e-4a3d-94a9-ed2f0dfbb1a0n%40googlegroups.com
> .

Peter Onion

unread,
Jun 5, 2025, 11:28:37 AM6/5/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 07:39 -0700, Mark Pruden wrote:
> Or here
>
> http://cpmarchives.classiccmp.org/cpm/mirrors/home.att.net/~halbower/index.html
>

Good job I've already learned how to use nulu, but unless I'm using it wrong ZXD22.LBR
doesn't seem to include the source code.

PeterO


Wayne Warthen

unread,
Jun 5, 2025, 11:32:37 AM6/5/25
to RC2014-Z80
RomWBW distributes the Harold Bower version of ZXD dated July 2001.  It is the one from the second URL provided by Mark.

Building it will require linking with the Z3 libraries.  See the top of zxd22.z80.

Keep in mind that BDOS function 152 is not available in CP/M 2.2.  ZXD is probably using the parsing code from the Z3 libraries which is likely to be superior.

Thanks, Wayne

Peter Onion

unread,
Jun 5, 2025, 11:37:50 AM6/5/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 08:32 -0700, Wayne Warthen wrote:
> RomWBW distributes the Harold Bower version of ZXD dated July 2001.  It is the one from
> the second URL provided by Mark.

I must be missing something Wayne as I looked at that link, found a .LBR file but it only
contains binary files.

PeterO

Wayne Warthen

unread,
Jun 5, 2025, 11:51:53 AM6/5/25
to RC2014-Z80
Odd.  I just downloaded the file from that link.  It downloads as zxd22.lbr.bin, which is strange, but I just renamed it to zxd22.lbr.  This is what I get when I unpack it:

ZXD22.LBR:
zxd22.lbr             39168 Library                            2001-07-18 06:13
  zxd.000             16512 Cr-LzhV2  (zxd.0y0         7296)   2001-07-03 18:11
  zxd.cfg              2048 Cr-LzhV2  (zxd.cyg          896)   1998-11-09 15:59
  zxd.com              6784 Cr-LzhV2  (zxd.cym         5248)   2001-07-03 18:12
  zxd.for               768 Stored                             2001-07-18 06:04
  zxd22.com            6784 Cr-LzhV2  (zxd22.cym       5248)   2001-07-03 18:12
  zxd22.z80           40576 Cr-LzhV2  (zxd22.zy0      16768)   2001-07-03 17:59
  zxdcfg.src           6912 Cr-LzhV2  (zxdcfg.syc      2688)   2001-07-18 06:06

zxd22.z80 is the source for the main assembly file.  zxd.000 is an included source file.

Thanks, Wayne

Peter Onion

unread,
Jun 5, 2025, 11:58:58 AM6/5/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 08:51 -0700, Wayne Warthen wrote:
> Odd.  I just downloaded the file from that link.  It downloads as zxd22.lbr.bin, which
> is strange, but I just renamed it to zxd22.lbr.  This is what I get when I unpack it:
>
> ZXD22.LBR:
> zxd22.lbr             39168 Library                            2001-07-18 06:13
>   zxd.000             16512 Cr-LzhV2  (zxd.0y0         7296)   2001-07-03 18:11
>   zxd.cfg              2048 Cr-LzhV2  (zxd.cyg          896)   1998-11-09 15:59
>   zxd.com              6784 Cr-LzhV2  (zxd.cym         5248)   2001-07-03 18:12
>   zxd.for               768 Stored                             2001-07-18 06:04
>   zxd22.com            6784 Cr-LzhV2  (zxd22.cym       5248)   2001-07-03 18:12
>   zxd22.z80           40576 Cr-LzhV2  (zxd22.zy0      16768)   2001-07-03 17:59
>   zxdcfg.src           6912 Cr-LzhV2  (zxdcfg.syc      2688)   2001-07-18 06:06
>
> zxd22.z80 is the source for the main assembly file.  zxd.000 is an included source file.
>

Wayne,

I only see the files like zxd22.zy0 which I have extracted with nulu, but how do you get
zxd22.z80 from that ?

PeterO


Wayne Warthen

unread,
Jun 5, 2025, 12:08:10 PM6/5/25
to RC2014-Z80
The LBR file members are compressed (crunched in CP/M lingo).  When a file in CP/M is crunched, the middle character of the extension is changed to y to reflect this.  When you use NULU to extract the file, it will uncrunch it and rename it to zxd22.z80.

Thanks, Wayne

Wayne Warthen

unread,
Jun 5, 2025, 12:12:03 PM6/5/25
to RC2014-Z80
Ugh, sorry.  NULU is not handling the .?y? extensions.  Use LBREXT instead.

-Wayne

Peter Onion

unread,
Jun 5, 2025, 12:29:53 PM6/5/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 09:08 -0700, Wayne Warthen wrote:
> The LBR file members are compressed (crunched in CP/M lingo).  When a file in CP/M is
> crunched, the middle character of the extension is changed to y to reflect this.  When
> you use NULU to extract the file, it will uncrunch it and rename it to zxd22.z80.
>

But it's not doing that. I've tried using the nulu "Unsqueeze" and "Extract" commands and
they both just create a file called zxd22.zy0 :-(

Is there a stand alone de-cruncher I could try to use ?

Oh, Wait, I got your next email just before pressing SEND. LBREXT has done it.

Now, back to when you said "Building it will require linking with the Z3 libraries. See
the top of zxd22.z80." I expect ZML is a linker, so is there a matching assembler ? And
where do they come from ?

I promise to stop bothering you soon :-)

Many thanks,

PeterO


Wayne Warthen

unread,
Jun 5, 2025, 12:41:21 PM6/5/25
to RC2014-Z80
ZML is the linker that comes with the ZMAC assembler.  This assembler package is found on the same page where you found ZXD -- the Hal Bower page.  You will also find the Z3 libraries can be downloaded from there.  You will need to unpack everything as needed.  They seem to be packed in multiple formats.

Thanks, Wayne

Peter Onion

unread,
Jun 5, 2025, 12:44:40 PM6/5/25
to rc201...@googlegroups.com
Don't worry Wayne, I've found them (on the same page as the ZXD library !)

PeterO (going dark for a while :-) )



Peter Onion

unread,
Jun 5, 2025, 1:00:00 PM6/5/25
to rc201...@googlegroups.com
I must say this is all much more fun than just typing "apt install some-package" :-)

PeterO

Wayne Warthen

unread,
Jun 5, 2025, 1:01:06 PM6/5/25
to RC2014-Z80
I agree!  😀

Tony Nicholson

unread,
Jun 5, 2025, 11:32:18 PM6/5/25
to RC2014-Z80
On Friday, June 6, 2025 at 2:12:03 AM UTC+10 Wayne Warthen wrote:
Ugh, sorry.  NULU is not handling the .?y? extensions.  Use LBREXT instead.

-Wayne

On Thursday, June 5, 2025 at 9:08:10 AM UTC-7 Wayne Warthen wrote:
The LBR file members are compressed (crunched in CP/M lingo).  When a file in CP/M is crunched, the middle character of the extension is changed to y to reflect this.  When you use NULU to extract the file, it will uncrunch it and rename it to zxd22.z80.


I use a program called LT31 which can extract and uncompress squeezed (*.?Q?), Limpel-Ziv-Welch
or LZH compressed (*.?Y?) or Crunched (*.?Z?) files from .LBR libraries.

Get it from the link in footnote [2] at 


It's also available from CP/M software archives at  http:/cpmarchives.classiccmp.org

Tony
 

Peter Onion

unread,
Jun 6, 2025, 1:15:54 AM6/6/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 20:32 -0700, Tony Nicholson wrote:
>
>
>
> I use a program called LT31 which can extract and uncompress squeezed (*.?Q?), Limpel-
> Ziv-Welch
> or LZH compressed (*.?Y?) or Crunched (*.?Z?) files from .LBR libraries.
>
> Get it from the link in footnote [2] at 
>
> https://github.com/agn453/UNZIP-CPM-Z80
>
> It's also available from CP/M software archives at  http:/cpmarchives.classiccmp.org
>
> Tony

Thanks for that info Tony. More tools to learn about :-)

PeterO

Peter Onion

unread,
Jun 6, 2025, 6:47:58 AM6/6/25
to rc201...@googlegroups.com
On Thu, 2025-06-05 at 07:39 -0700, Mark Pruden wrote:
> Or here
>
> http://cpmarchives.classiccmp.org/cpm/mirrors/home.att.net/~halbower/index.html
>

Mark et.al.,

After some faffing around I've got all the bits in place to rebuild ZXD. Now the real
work can begin.

I've also unpacked all the .HLP files for the various libraries needed to build ZXD, and
!!WOW!! there's some useful stuff in those !

PeterO

Peter Onion

unread,
Jun 6, 2025, 12:21:34 PM6/6/25
to RC2014-Z80
It needs more work, like adding a an additional "sort by" option, but here is ZXD producing a listing sorted by the modified date stamp.
This is running on Z3PLUS but I believe it will work on any OS with date stamps.
There is a Y2K issue though.  Because DateStamper format was never Y2K compliant (2 digit BCD encoded year) currently years before 2000 will come out as later than  post 2000.
And there is a Y2077 problem looming !  CP/M 3 (P2DOS) format stamps don't have this problem because they store "day since 1/1/1978" as a 16 bit integer.
Also selecting "European Date Format" uses "dd.mm.yy" for the separator, but CP/M 3's "UK" format uses the more common "dd/mm/yy" fromat so there are a few "tweaks" to make there.

PeterO



5:10 J0>>zxd22 /d
ZXD  Ver 2.2       06 Jun 2025  17:10:52
Filename.Typ  Size     Modified      Filename.Typ  Size     Modified  
-------- ---  ----     --------      -------- ---  ----     --------  
LBRHL45A.LBR  132k                   FRED    .OLD    4k  13:55-26.05.25
ZXD22   .LBR   40k                   TEST    .BAK    4k  17:59-26.05.25
LIBS45A .LBR   60k                   FRED    .BAK    4k  18:22-26.05.25
LBRHL45A.LBR   96k                   FRED    .TXT    4k  18:22-26.05.25
ZXD22   .Z80   40k                   TEST    .TXT    4k  13:10-27.05.25
LBRHL45A.LBR   64k                   F1      .BAK    4k  17:08-27.05.25
LIST    .PRN   64k                   F1      .TXT    4k  17:11-27.05.25
FORMATE .MAC    4k  19:58-24.05.25   SAVE    .BAK    8k  22:13-28.05.25
FORMATE .COM    4k  20:00-24.05.25   SAVE    .MAC    8k  22:21-28.05.25
FORMATE .REL    4k  20:00-24.05.25   CNVDAYS .BAK    4k  09:26-29.05.25
L80     .COM   12k  20:02-24.05.25   CNVDAYS .REL    4k  09:28-29.05.25
M80     .COM   20k  20:02-24.05.25   CNVDAYS .MAC    4k  09:28-29.05.25
WRITEF  .BAK    4k  20:03-24.05.25   LIST    .PRN   32k  07:35-31.05.25
WRITEF  .MAC    4k  20:03-24.05.25   LIST    .BAK   24k  14:20-05.06.25
WRITEF  .COM    4k  15:09-25.05.25   ZXD22   .LBR   32k  16:21-05.06.25
WRITEF  .TXT    4k  08:01-26.05.25   ZXD     .CYM    8k  16:24-05.06.25
WRITEF  .PRN   12k  10:30-26.05.25   ZXD     .CYG    4k  16:24-05.06.25
WRITEF  .REL    4k  10:30-26.05.25   ZXD     .FOR    4k  16:24-05.06.25
SAVE    .COM    4k  13:54-26.05.25   ZXD     .0Y0    8k  16:24-05.06.25
SAVE    .REL    4k  13:54-26.05.25   ZXDCFG  .SYC    4k  16:25-05.06.25
[more]
Filename.Typ  Size     Modified      Filename.Typ  Size     Modified  
-------- ---  ----     --------      -------- ---  ----     --------  
ZXD22   .CYM    8k  16:25-05.06.25   SYSLIB  .REL   24k  08:17-06.06.25
ZXD22   .ZY0   20k  17:13-05.06.25   SYSLIBS .REL   20k  08:17-06.06.25
ZXD22   .Z80   32k  17:23-05.06.25   VLIBS   .REL    8k  08:17-06.06.25
ZXD     .CFG    4k  17:38-05.06.25   Z3LIB   .REL   12k  08:17-06.06.25
ZXD     .BAK   20k  17:39-05.06.25   Z3LIBS  .REL   12k  08:18-06.06.25
LBRHL45A.LBR   32k  19:53-05.06.25   ZML20   .CFG   12k  08:25-06.06.25
LIST    .MAC   24k  21:04-05.06.25   ZMAC    .COM   24k  08:27-06.06.25
LIST    .REL    4k  21:05-05.06.25   ZML     .COM   12k  08:27-06.06.25
LIST    .COM    4k  21:06-05.06.25   ZCNFG   .COM    8k  08:27-06.06.25
LIBS45A .LBR   32k  08:13-06.06.25   ZMLIB   .COM    4k  08:27-06.06.25
VLIB    .REL    8k  08:17-06.06.25   ZXD     .000   20k  16:46-06.06.25
DSLIB   .REL    8k  08:17-06.06.25   ZXD22   .REL    8k  16:47-06.06.25
DSLIBS  .REL    8k  08:17-06.06.25   ZXD22   .COM    8k  16:48-06.06.25
LIBS45  .NOT    4k  08:17-06.06.25
  J0: -- 67 Files Using 1132K (7332K Free)

Mark Pruden

unread,
Jun 8, 2025, 3:30:00 AM6/8/25
to RC2014-Z80
Sounds like some good progress.

>> There is a Y2K issue though.  Because DateStamper format was never Y2K compliant (2 digit BCD encoded year) currently years before 2000 will come out as later than  post 2000.

The simple solution for this is to offset years prior to 70 by adding 100, so the effective date range becomes 1970 - 2069. This complicates sorting depending on how the code is written. Ideally the displayed year is kept seperate to the sort year, which can be manipulated to account for changed meaning

>> Also selecting "European Date Format" uses "dd.mm.yy" for the separator, but CP/M 3's "UK" format uses the more common "dd/mm/yy" fromat so there are a few "tweaks" to make there.

I think you will find this is correct, in most of Europe they use “.” As separators 


Are you a GitHub user, if so it would be good to get this published.

M

Peter Onion

unread,
Jun 8, 2025, 4:12:35 AM6/8/25
to RC2014-Z80
Mark,

I'm not sure of the year when the 1900-2000 split takes place.  I did find a description of the datestamper format but I can't find it again now.  I think it is either 1977 or 1978.  CP/M 3 (or P2DOS) formats start their day number at 1st January 1978.

The easiest solution is to compute YY-77  then DAA so that 1977 comes out as 0 and 2076 comes out as 99.

WRT . or / as the separator,    as I said CP/M 3 has "UK" format date option no European.  I'm going to make the choice of . or / an explicit option.

I need to also sort out to update ZXD.CFG (and how to use it) works utility before putting anything on github.

PeterO

Peter Onion

unread,
Jun 10, 2025, 12:15:49 PM6/10/25
to RC2014-Z80
ARGH !  I've found an issue with the way ZXD handles files with more than one extent.  The "de-duping" function that consolidates the multiple directory entries for large files is called after the "sort by file name" function.
In that case all of a files directory entries will be adjacent in the sorted list and the de-dupe function makes that assumption.  Of course this may not be the case if the list has been "sorted by timestamp" as only the first extent has timestamps.  I think the de-duping of the list should be performed before the sort.  
I thought I was about finished with this, but more work is required.
PeterO

Mark Pruden

unread,
Jun 10, 2025, 1:14:50 PM6/10/25
to RC2014-Z80
How about leave it mostly as is

* (existing) sort by file name, 
* (existing) dedup
* (new) optionally sort by date

Peter Onion

unread,
Jun 10, 2025, 1:31:46 PM6/10/25
to RC2014-Z80
Mark,

That is certainly an option, but until I've worked out code to handle the multiple extents I can't say if it is the best or easiest option.
I think it would be easy to search for only put the first extent of all the files and to put those into the list, but that could mean sacrificing the file size display in the output.

My "plan a" is to work on code to produce a de-duped list including file size.

PeterO

Peter Onion

unread,
Jun 10, 2025, 6:10:21 PM6/10/25
to RC2014-Z80
I've been having trouble understanding the extent numbers in directory entries returned by find first and find next bdos calls.
That was until I found a reference to the linux man page for "CP/M disk and file system format" (man 5 cpm).
It has info about the extent number in an FCB that I've not seen anywhere else.  Xl and Xh are at bytes 12 and 14 in the directory entry.

        Xl and Xh store the extent number.  A file may use more than one direc‐
       tory  entry,  if  it  contains more blocks than an extent can hold.  In
       this case, more extents are allocated and each of them is numbered  se‐
       quentially  with  an  extent  number.  If a physical extent stores more
       than 16k, it is considered to contain multiple  logical  extents,  each
       pointing  to  16k  data, and the extent number of the last used logical
       extent is stored.  Note: Some formats decided to always store only  one
       logical  extent  in a physical extent, thus wasting extent space.  CP/M
       2.2 allows 512 extents per file, CP/M 3 and higher allow  up  to  2048.
       Bit 5-7 of Xl are 0, bit 0-4 store the lower bits of the extent number.
       Bit 6 and 7 of Xh are 0, bit 0-5 store the higher bits  of  the  extent


I couldn't understand the values I was seeing in the extent field until I found this info.  On a RomWBW hd1k slice there are two logical extents in each physical extent.

PeterO

Peter Onion

unread,
Jun 11, 2025, 10:02:36 AM6/11/25
to RC2014-Z80
Mark, 
I started to look at writing my own de-dupe code but after a while realised that your suggestion was the way to go. as dduping after sorting by file name is much easier as it has already coalesced all the extents for each file.
As you suggested the optional "sort by timestamp" is a second sorting step on the deduped list.  It's much simpler and requires fewer changes.
I need to go through and add/update a few comments then I'll put it onto github.
PeterO
 

On Tuesday, 10 June 2025 at 18:14:50 UTC+1 Mark Pruden wrote:

Mark Pruden

unread,
Jun 11, 2025, 8:50:47 PM6/11/25
to RC2014-Z80
Hi Peter, 

Glad my suggestion worked for you. From your earlier descriptions of file name sort/dedup, sounded more like a necessary step because of the way cpm manages directory entries. 

What if I wanted to sort by file size , would still need those step.

Also In an old bit of code I always look for smaller changes, otherwise you go down rabbit hole, and a few weeks latter … 

Mark Pruden

unread,
Jun 11, 2025, 8:52:55 PM6/11/25
to RC2014-Z80
And one last thing, if put on GitHub, best practice is to commit the in the original modified code, the commit your changes in top of that

Peter Onion

unread,
Jun 12, 2025, 1:39:58 AM6/12/25
to rc201...@googlegroups.com
On Wed, 2025-06-11 at 17:52 -0700, Mark Pruden wrote:
> And one last thing, if put on GitHub, best practice is to commit the in the original
> modified code, the commit your changes in top of that
>

Mark,

I'm only a very occasional github user so I'll have to check out how to do that (pun
intended).

PeterO

Peter Onion

unread,
Jun 12, 2025, 2:19:46 AM6/12/25
to RC2014-Z80
Mark,
Do you think I should I bump the version number to 23 ?
PeterO

Peter Onion

unread,
Jun 12, 2025, 5:48:22 AM6/12/25
to RC2014-Z80
Githib has become totally unusable to the casual user so no I won't be putting my code there :-(
PeterO



Peter Onion

unread,
Jun 12, 2025, 8:44:51 AM6/12/25
to RC2014-Z80
Can you believe I have spent three hours reading wrong tutorials and other out of date resources until I finally found the pages I actually needed !  And then I went down an eight browser tab rabbit hole to complete all the needed steps, which included installing the github-cli tools.  I've never had to do that before
So eventually I've got my ZXD code onto github at https://github.com/PeterOGB/ZXD22a
Phew...
PeterO

Mark Pruden

unread,
Jun 12, 2025, 8:43:26 PM6/12/25
to RC2014-Z80
Absolutely, 2.3 and comments to the changes made.

Mark Pruden

unread,
Jun 12, 2025, 8:54:31 PM6/12/25
to RC2014-Z80
Sorry you went through so much pain. Github is just git with a modern back end. I cant speak to installing Git on Windows as GIt is installed by default on Mac/Linux. Most of the time I use an GUI to interact with GIT. The one I recommend is https://www.sourcetreeapp.com/ - but this wont mean you want need to use the command line. The other tool you need is a good IDE, i use intelliJ, but that because I an from Java background. The one that is popular is VisualStudioCode. Using a tool like this it has direct support for Git / Github, and it generally makes it a lot easier, since you can more easily manage and see your changes. VisualStudioCode also has support for Z80 (syntax highlighting) via plugin.
Reply all
Reply to author
Forward
0 new messages