Pascal for Small Machines

(pascal.hansotten.com)

116 points | by ibobev 2 days ago ago

26 comments

  • WillAdams 2 days ago ago

    Anyone with a spare Micro-SD Card and a Raspberry Pi 5 should try:

    http://pascal.hansotten.com/niklaus-wirth/project-oberon/obe...

    • Rochus 2 days ago ago

      This is just an emulator which runs on Raspi Linux, not a native implementation. You can run it everywhere, even on Windows.

      • WillAdams 2 days ago ago

        Yeah, I thought about mentioning that, but it seemed ungrateful to complain of a lack of drivers when I've never written one (but I do still wish someone would take that on as a project).

        c.f.,

        https://github.com/MGreim/ultiboberon

        • Rochus 2 days ago ago

          It wasn't a complaint, just a fact. Btw. instead of natively porting the Oberon system, it's also possible to just transpile the Oberon code to C and then natively (cross-)compile the C code to the target architecture. That would even work with a bare-bone system. I have two Oberon system versions based on this approach (https://github.com/rochus-keller/OberonSystem and https://github.com/rochus-keller/OberonSystem3). Replacing the PAL/SDL adapter to a plain frame buffer and serial input seems feasible. Using a framework like https://github.com/rsta2/circle would make the task even easier. Of course the Oberon compiler does still generate code for the original architecture (one could replace it by a compiler using e.g. TCC as a backend).

    • tomcam 2 days ago ago

      Super exciting! Thanks

  • timonoko 2 days ago ago

    I made Pascal for 8080 in about a week in 1979. How is it possible you may ask?

    Well son, I had Lisp and I just added Pascal translator. Only caveat was that it ignored type declarations and such useless academic shit. Because I had sort-of compiler too, it was not really bad when compared to Turbo-Pascal.

    • timonoko 2 days ago ago

      I found 50 pages manual for the Noko-Pascal. Finnish Army paid for it, because nothing comparable was available. Writing the manual was 10 times bigger task.

      The army used Nokopaskal for testing radio modems. Looks like the language was heavy with low level constructs like PORT.

      I truly did not remember any of this until today.

      https://photos.app.goo.gl/uibbTgCQmm4XCa9c6

    • timonoko 2 days ago ago

      Erh. What?

      Here is my infamous 1976 Nokolisp-compiler at work:

        c:\ nokolisp
        (comp-debug t)
        (ncompile (macroexpand '(+ 1 2 a)))
      
        $36E8:$5CC8:   MOV  BX,$02
        $36E8:$5CCB:   MOV  AX,$01
        $36E8:$5CCE:   ADD  AX,BX
        $36E8:$5CD0:   PUSH AX
        $36E8:$5CD1:   MOV  AX,[$0190]
        $36E8:$5CD4:   CALL $0F1D ; CALL NUMVAL
        $36E8:$5CD7:   MOV  BX,AX
        $36E8:$5CD9:   POP  AX
        $36E8:$5CDA:   ADD  AX,BX
        $36E8:$5CDC:   CALL $05C9 ; CALL MAKNUM
        $36E8:$5CDF:   JMP  $1DA7
        (subru: eval=$5CC8, compile=$3B6F)
      • anta40 2 days ago ago

        https://github.com/timonoko/nokolisp

        Interesting work.

        Time to setup DOSBox + MASM + etc etc.... :D

        • sph 2 days ago ago

          Hot damn, that's such a cool piece of engineering that's worth its own post. I reckon hand coding a Lisp in assembly was commonplace in the late 70s, but these days it's like seeing an artefact from a long-lost civilization, as we've mostly lost those kind of skills.

        • timonoko 2 days ago ago

          noko.exe works at dosbox without any "etc etc".

          nokolisp.exe is just a kernel without editors and macroes.

          • anta40 2 days ago ago

            for building the interpreter from the source, of course. because... well why not? :D

    • jrdres a day ago ago

      Thanks for the 8088 version on Github. Any chance you still have the 8080 CP/M version?

      • timonoko a day ago ago

        The version with external 5 x 64k memory is definitively in Osborne-1 disk drawer.

        But Osborne does not work. It was so heavily modified that it will never work. The external memory was partially visible in memory space. And the display driver was improved to have 80 columns.

        But the stand-alone CP/M-version is long gone.

        • timonoko a day ago ago

          Now that I think about it, it might be possible that it could work in both configurations. The external memory was kinda bulky and not suitable for portable computer.

          It would have been wasteful to keep the main memory empty. Or maybe it was reserved for compiled functions?

    • MortyWaves 2 days ago ago

      Types are academic shit to you? I despair.

      • timonoko 2 days ago ago

        All had same type, they were pointers. VAR-section was anyways useful for testing that there was no errors in spelling of symbols. And array was a list. And strings were just list of numbers, with special symbol in front. It looked very professional, only error message were little bit incomprehensible and lispy.

        Unlike competitors (whatever they were) it had garbage collector, incredibly useful in 64k machine.

      • sph 2 days ago ago

        [flagged]

        • MortyWaves 2 days ago ago

          It’s a shame these type of comments exist on HN. Can’t say anything without upsetting some JS devs these days.

  • jksmith 2 days ago ago

    Awesome. Thanks for posting. I miss my modula-2 so much I wrote a bunch of editor macros for Lazarus that allows me to write slightly modula-2 like code in the editor.

    • pjmlp 2 days ago ago

      Since GCC 14, that GNU Modula-2 is part of GCC.

      Also XDS has been freely available for a couple of years now.

      What I miss is that there is no modern equivalent of formating keywords on save, I helped with one plugin for Sublime Text on Oberon, maybe need to do the same for VSCode.

  • przemub 2 days ago ago

    I thought it would be Pascal for microcontrollers :) Still very nice!

  • black_13 2 days ago ago

    [dead]