💾 Archived View for oppen.digital › memex › 20210905_2024 captured on 2022-01-08 at 14:03:47. Gemini links have been rewritten to link to archived content
-=-=-=-=-=-=-
A bare-bones Mariner Protocol client written in Chipmunk Basic. I played with Chipmunk Basic back in the 90s when I had an Apple Performa 5200 (widely regarded as the worst Apple computer ever manufactured), I'm hoping the code below would still run fine on an old Mac and enable access to oppen.digital via the Mariner Protocol
More about Mariner Protocol on the Phaedra page
Chipmunk Basic Mariner Protocol screenshot
' A Mariner Protocol client written in Chipmunk Basic 3.6.7b6 for Mac OS X ' ifelse appears broken in this version so there's some inelegant syntax ' Chipmunk Basic Language Reference: http://anoved.net/cbasdox/index.html ' Chipmunk Basic pocketManual https://en.wikibooks.org/wiki/Chipmunk_Basic_pocketManual cls print "Chipmunk BASIC Mercury Client" print "Written by ÖLAB: oppen.digital" ' All arrays must be dimensioned before use... dim history$(128) historyIndex = 0 input "Enter address: "; initialAddress$ if initialAddress$ = "" then address$ = "mercury://oppen.digital" else address$ = initialAddress$ endif if (left$ (address$, 9 ) = "mercury://") then nav(address$) else print "Error: initial address must be a full mercury:// url: " + address$ endif nav() sub nav() cls extractHost$() print "Address: " + address$ print "Host: " + host$ print "" open "socket:" + host$,1963 for input as #1 open "socket:" + host$,1963 for output as #2 request$ = address$ + newline$ print #2, request$; pushHistory() dim links$(128) links$(0) = "" linkCount = 1 while input #1, line$ : if eof(1) then exit while if left$(line$, 2) = "=>" then uri$ = mid$(line$, 3) uri$ = field$(uri$, 1) handled = 0 if left$(uri$, 10) = "mercury://" then links$(linkCount) = uri$; handled = 1 endif if left$(uri$, 1) = "/" then links$(linkCount) = address$ + uri$; handled = 1 endif if handled = 0 then links$(linkCount) = address$ + "/" + uri$ endif print str$(linkCount) + " " + line$ linkCount = linkCount + 1 else print line$ endif wend close #1 close #2 input "> "; command if command = -1 then: popHistory() else: address$ = links$(command) nav() end sub sub extractHost$() if left$(address$, 10) = "mercury://" then: host$ = field$(address$, 3, "/") end sub sub pushHistory() history$(historyIndex) = address$ historyIndex = historyIndex + 1 end sub sub popHistory() historyIndex = historyIndex - 2 address$ = history$(historyIndex) end sub