trn's comments

trn | 1 year ago | on: Hardware FPGA DPS-8M Mainframe and FNP Project

While we do want to support GCOS, it'll be GCOS-3, and that is if we can find system tapes. We are actually planning another blog post soon that will touch on this.

Now, Multics does have GTSS (GCOS Time Sharing Simulator), which Dean has helped us get working.

There is an general information page available: https://dps8m.gitlab.io/sb/MR12.8/documentation/info_segment...

This facility is based on GCOS-3 4JS3, and it does work, although the software that we have available for it is minimal.

GCOS-8 is a different beast entirely. While there is the possibility that a future version of the simulator could theoretically run GCOS-8 in the future (as most of the work necessary overlaps with supporting CP-6), this is not something that we're going to support as GCOS-8 is a current commercial product.

If you want to run GCOS-8, you'll have to purchase an Atos BullSequana M9600 mainframe - https://atos.net/wp-content/uploads/2020/09/BullSequana_M_Br...

trn | 2 years ago | on: Multics Simulator

Yes, this interpretation is correct.

It should be noted that not all of the hardware is strictly "emulated" (or simulated, if you prefer that term) in the traditional sense of interpreting each hardware instruction. The DPS in the name means "distributed processing system", and this is not merely a marketing term.

The DPS series, like many other mainframes, have multiple independent systems working together. For example, IO is handled by a FNP (frontend network processor) which was a (physically) separate minicomputer, with its own CPU, OS, etc. There were various FNP models (16-bit and 18-bit systems) produced. The DPS8M software implements the FNP at a high level, rather than running its original software (though there is both an FNP software simulator and a FPGA FNP project underway).

We did have some internal debate on if the system is a "simulator" or an "emulator", but really, it can be both, depending on how pedantic you want to be.

The biggest reason for the name being what it is, however, is that since the beginning, the software was called the "DPS8M Simulator", and even if emulator might be (arguably) a better name, it's not worth changing it at this point.

Disclosure: I'm one of the developers.

Edit: There are also some optimizations in place (https://dps8m.gitlab.io/dps8m-r3.0.1-archive/R3.0.1/global/S...) that blur the lines between emulator, simulator, and virtual machine.

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

I will confirm that Vile is an excellent editor. I don't know if I'd consider it a vi-clone, because the vi-ness is kind of skin-deep, but it's performant and works well.

(In school, early 90's, there was a large vile following on VMS, which is where I mostly used it. I don't recall why it was preferred to Vim on VMS, however. Perhaps we didn't have Vim easily available or installed. But I digress.)

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

pEmacs is "even better" for minimalists.

https://github.com/hughbarney/pEmacs

Stripped -Os build using link-time GC on Linux x86_64 glibc:

     30 KB  pe*
Compare to portable mg:

    132 KB  mg*
OpenVi is ...

    278 KB  bin/vi*
An even smaller vi implementation is Xvi.

     56 KB  src/xvi*
This would be an 'ersatz' vi since it is not built on top of a real ex-mode.

Even tinier ersatz-vi clones exist (`levee`, `s`, `VIrus`) but these are not complete implementations.

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

OpenVi uses only secure functions (snprintf, strlcpy, etc.) as a matter of policy.

This may lead to a more secure editor for untrusted files, but it depends on how careful the other editors are. (I haven't examined them at that level.)

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

I dogfood OpenVi and use it for OpenVi development, however, 99% of my normal programming workflow is (terminal-based) NeoVim.

The other 1% is Eclipse or VSCode ... and I have VSCode setup to use the embedding functionality of NeoVim.

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

Cleanly doing UTF-8 support (the "right" way) is planned but is certainly non-trivial ... for example, see:

https://www.openbsd.org/papers/eurobsdcon2016-utf8.pdf and http://www.usenix.org/events/usenix99/full_papers/hagino/hag...

Nvi2 (and Nvi1) are excellent editors, but I wouldn't want to copy the Nvi2 implementation directly. This has been talked about elsewhere*

* https://misc.openbsd.narkive.com/9NHoQv8L/nvi-and-unicode#po...

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

To give a quick overview of ':set'-able options (`:set all` output) of the various editors that derive from 'nvi' ... [no Nvi2 here ... yet] ...

Nv1 [nvi-1.81.6-45-g864873d3 (2022-02-21)]:

    noaltwerase     nocomment       noignorecase    nomodeline      noreadonly      noshowmode      nottywerase
    noautoindent    noedcompatible  keytime=6       msgcat="./"     noredraw        sidescroll=16   noverbose
    autoprint       escapetime=1    noleftright     noprint=""      remap           noslowopen      warn
    noautowrite     noerrorbells    lines=24        nonumber        report=5        nosourceany     window=23
    backup=""       noexrc          nolisp          nooctal         noruler         tabstop=8       nowindowname
    nobeautify      noextended      nolist          open            scroll=11       taglength=0     wraplen=0
    cdpath=":"      filec=""        lock            optimize        nosearchincr    tags="tags"     wrapmargin=0
    cedit=""        flash           magic           path=""         nosecure        noterse         wrapscan
    columns=117     hardtabs=0      matchtime=7     print=""        shiftwidth=8    notildeop       nowriteany
    nocombined      noiclower       mesg            prompt          noshowmatch     timeout
    directory="/tmp"
    fileencoding="UTF-8"
    inputencoding="UTF-8"
    paragraphs="IPLPPPQPP LIpplpipbp"
    recdir="/var/tmp/vi.recover"
    sections="NHSHH HUnhsh"
    shell="/bin/zsh"
    shellmeta="~{[*?$`'"\"
    term="screen-256color"
OpenVi [7.0.13-dev (OpenVi) 02/20/2022]:

    noaltwerase     nocomment       noiclower       mesg            report=5        taglength=0     nowindowname
    noautoindent    noedcompatible  noignorecase    noprint=""      noruler         tags="tags"     wraplen=0
    autoprint       escapetime=2    noimctrl        nonumber        scroll=11       noterse         wrapmargin=0
    noautowrite     noerrorbells    keytime=6       nooctal         nosearchincr    notildeop       wrapscan
    backup=""       noexpandtab     noleftright     open            nosecure        timeout         nowriteany
    nobeautify      noexrc          lines=23        path=""         shiftwidth=8    nottywerase
    nobserase       noextended      nolist          print=""        noshowmatch     noverbose
    cdpath=":"      filec=" "       lock            prompt          noshowmode      novisibletab
    cedit=""        noflash         magic           noreadonly      sidescroll=16   warn
    columns=117     hardtabs=0      matchtime=7     remap           tabstop=8       window=22
    imkey="/?aioAIO"
    paragraphs="IPLPPPQPP LIpplpipbpBlBdPpLpIt"
    recdir="/var/tmp/vi.recover"
    sections="NHSHH HUnhshShSs"
    shell="/bin/zsh"
    shellmeta="~{[*?$`'"\"
    term="screen-256color"
OpenBSD vi [7.0-current]:

    noaltwerase     escapetime=1    noleftright     path=""         noshowmatch     warn
    noautoindent    noerrorbells    lines=36        print=""        noshowmode      window=35
    autoprint       noexpandtab     nolist          prompt          sidescroll=16   nowindowname
    noautowrite     noexrc          lock            noreadonly      tabstop=8       wraplen=0
    backup=""       noextended      magic           remap           taglength=0     wrapmargin=0
    nobeautify      filec=" "       matchtime=7     report=5        tags="tags"     wrapscan
    cdpath=":"      noflash         mesg            noruler         noterse         nowriteany
    cedit=""        hardtabs=0      noprint=""      scroll=17       notildeop
    columns=108     noiclower       nonumber        nosearchincr    timeout
    nocomment       noignorecase    nooctal         nosecure        nottywerase
    noedcompatible  keytime=6       open            shiftwidth=8    noverbose
    paragraphs="IPLPPPQPP LIpplpipbpBlBdPpLpIt"
    recdir="/tmp/vi.recover"
    sections="NHSHH HUnhshShSs"
    shell="/usr/local/bin/zsh"
    shellmeta="~{[\*?$`'"\"
    term="screen-256color"
Traditional vi [n-t-roff Heirloom vi (01/14/2017)]:

    noautoindent            nomodelines                     noshowmode
    autoprint               nonumber                        noslowopen
    noautowrite             open                            nosourceany
    nobeautify              nooptimize                      tabstop=8
    directory=/var/tmp      paragraphs=IPLPPPQPP LIpplpipbp taglength=0
    noedcompatible          prompt                          tags=tags /usr/lib/tags
    noerrorbells            noreadonly                      term=screen-256color
    noexrc                  redraw                          noterse
    flash                   remap                           timeout
    hardtabs=8              report=5                        ttytype=screen-256color
    noignorecase            scroll=17                       warn
    nolisp                  sections=NHSHH HUnhsh           window=35
    nolist                  shell=/usr/bin/zsh              wrapscan
    magic                   shiftwidth=8                    wrapmargin=0
    mesg                    noshowmatch                     nowriteany

trn | 4 years ago | on: OpenVi: Portable OpenBSD vi for Unix systems

Don't confuse OpenVi/OpenBSD-vi, nvi1, and nvi2. These are all different programs that share the same heritage.

OpenVi is derived from OpenBSD vi, which derives from nvi version 1.79, released in 1996. There has been 25+ years of independent development as part of the OpenBSD base system and has diverged greatly in that time, with the development going in a different direction.

Nvi1, currently on version 1.8x, is maintained at https://repo.or.cz/nvi.git - I believe the latest version of this editor does have multibyte support, but this is not the OpenVi/OpenBSD version of the editor.

Nvi2 shares heritage as well but also, quite far removed from the original code, is actively maintained at https://github.com/lichray/nvi2 and also includes multibyte support.

(IIRC) the multibyte support in both Nvi1 and Nvi2 derives from nvi-m17n, developed as part of the KAME project by the late itojun - http://www.itojun.org/itojun.html ... the last update to nvi-m17n was about 3 years ago, and is available at https://cgit.freebsd.org/ports/tree/editors/nvi-m17n/files

Currently, optimizing for size using link-time garbage collection with GCC 11.2 on an x86_64 glibc Linux system gives a good idea of the changes over time and the different direction these editors have taken. OpenVi is also simplified in structure and does not have the three levels of abstraction of Nvi 1.8x - there is no library interface layer.

For OpenVi, the compiled binary is 280K, and for Nvi1 (nvi-1.81.6-45-g864873d3) the compiled binary is 528K (36K for vi, 528K for libvi).

OpenVi has a single configuration standard with no dependencies beyond curses.

Nvi1 has many options beyond trace/debug ("widechar" "gtk" "motif" "threads" "perl" "tcl" "db3/4" "internal-re") - so at least 255 different build variations are possible.

(I've not yet built Nvi2 myself on Linux so I can't provide an really fair comparison yet, but I will, and I'll summarize the data in an FAQ section of the README)

Nvi1 (https://repo.or.cz/nvi.git) looks like:

    36K    vi
    24K    vi-ipc
    108K   vi-motif
    492K   libvi.so.0.0.0
    660K   total
OpenVi does not - it's a single monolithic binary:

    280K   bin/vi
(Note that I was using the defaults here, I'm sure that it's possible to trim down Nvi 1.8x further, but I'm comparing the default compilations, optimized for size (GCC, -Os, -fdata-sections, -ffunction-sections, link-time GC enabled), but Nvi 1.8x is a much more complicated program, and has a different feature set, and different supported options.

But, these are all different editors at this point. A lot happens in 25 years.

page 1