diff --git a/client/test/Makefile b/client/test/Makefile index ba2d971..397a0d7 100644 --- a/client/test/Makefile +++ b/client/test/Makefile @@ -21,6 +21,7 @@ INCFILES=\ all: \ ip65test.dsk \ testdns.prg \ + test_gopher.prg \ testdns.pg2 \ testtftp.prg \ testtftp.pg2\ diff --git a/client/test/retro_gopher.txt b/client/test/retro_gopher.txt new file mode 100644 index 0000000..109117b --- /dev/null +++ b/client/test/retro_gopher.txt @@ -0,0 +1,16 @@ +i WELCOME TO THE RETRONET GOPHER HOLE! error.host 1 +i error.host 1 +i _____ _____ _____ _____ _____ error.host 1 +i | __ | __|_ _| __ | | error.host 1 +i ,,, | -| __| | | | -| | | error.host 1 +i o^.^o |__|__|_____| |_| |__|__|_____| error.host 1 +i \"/ _____ _____ _____ _________ error.host 1 +i / ;; | | | __|_ _| / n___n \ error.host 1 +i~( )) | | | | __| | | ==/ (o) \== error.host 1 +i `L L |_|___|_____| |_| |_______| error.host 1 +i error.host 1 +1luddite /luddite/ retro-net.org 70 +1wgoodf /wgoodf/ retro-net.org 70 +1arfink /arfink/ retro-net.org 70 +1rsayers /rsayers/ retro-net.org 70 +. diff --git a/client/test/rob_gopher.txt b/client/test/rob_gopher.txt new file mode 100644 index 0000000..1e68830 --- /dev/null +++ b/client/test/rob_gopher.txt @@ -0,0 +1,40 @@ +igopher. error.host 1 +i ___ _ ___ error.host 1 +i| _ \ ___ | |__ / __| __ _ _ _ ___ _ _ ___ error.host 1 +i| / / _ \ | '_ \ \__ \ / _` | | || | / -_) | '_| (_-< error.host 1 +i|_|_\ \___/ |_.__/ |___/ \__,_| \_, | \___| |_| /__/ error.host 1 +i |__/ error.host 1 +i .com error.host 1 +i error.host 1 +iServer Info error.host 1 +0About this server /serverinfo.txt robsayers.com 70 +7Search This Server (experiemental) /localsearch robsayers.com 70 +0Server Update /uptime.sh robsayers.com 70 +0Tail of server log /log.sh robsayers.com 70 +i error.host 1 +iPersonal error.host 1 +0About Me /aboutme.txt robsayers.com 70 +1Pics /pics robsayers.com 70 +0Latest Twitter Updates /twitter.txt robsayers.com 70 +0My GPG/PGP Public Key /pubkey.asc robsayers.com 70 +i error.host 1 +iGopher error.host 1 +0Why am I running gopher? /whygopher.txt robsayers.com 70 +1RedGopher - Ruby Gopher Client /redgopher robsayers.com 70 +0Search Engine Design Notes /searchengine.txt robsayers.com 70 +gXKCD Comic comic mentioning Gopher /not_enough_work.png robsayers.com 70 +1Links to other Gopher Sites /world gopher.floodgap.com 70 +i error.host 1 +iMisc. Geeky things error.host 1 +1My Tandy Model 100 /model100 robsayers.com 70 +0My Computers /computers.txt robsayers.com 70 +0Why Public Domain /why_public_domain.txt robsayers.com 70 +1Programs I have released /programs robsayers.com 70 +1Collection of Programming PDFs /documents robsayers.com 70 +12009 RetroChallenge /retrochallenge robsayers.com 70 +i error.host 1 +i error.host 1 +i error.host 1 +i error.host 1 +i error.host 1 +. diff --git a/client/test/test_gopher.s b/client/test/test_gopher.s new file mode 100644 index 0000000..2de8b54 --- /dev/null +++ b/client/test/test_gopher.s @@ -0,0 +1,172 @@ + .include "../inc/common.i" + .include "../inc/commonprint.i" + .include "../inc/net.i" + .include "../inc/char_conv.i" + + .import get_key + .import __CODE_LOAD__ + .import __CODE_SIZE__ + .import __RODATA_SIZE__ + .import __DATA_SIZE__ + +.segment "STARTUP" ;this is what gets put at the start of the file on the C64 + + .word basicstub ; load address + + +basicstub: + .word @nextline + .word 2003 + .byte $9e + .byte <(((init / 1000) .mod 10) + $30) + .byte <(((init / 100 ) .mod 10) + $30) + .byte <(((init / 10 ) .mod 10) + $30) + .byte <(((init ) .mod 10) + $30) + .byte 0 +@nextline: + .word 0 + +.segment "EXEHDR" ;this is what gets put an the start of the file on the Apple 2 + .addr __CODE_LOAD__-$11 ; Start address + .word __CODE_SIZE__+__RODATA_SIZE__+__DATA_SIZE__+4 ; Size + jmp init + + +.data +get_next_byte: + lda $ffff + inc get_next_byte+1 + bne :+ + inc get_next_byte+2 +: + rts + +.bss + +page_counter: .res 1 +MAX_PAGES = 10 +page_pointer_lo: .res MAX_PAGES +page_pointer_hi: .res MAX_PAGES + +resource_counter: .res 1 +MAX_RESOURCES = 25 + +resource_pointer_lo: .res MAX_RESOURCES +resource_pointer_hi: .res MAX_RESOURCES +resource_type: .res MAX_RESOURCES + +this_is_last_page: .res 1 + +.code + +init: + + jsr show_buffer + rts + +show_buffer: + + ldax #input_buffer + stax get_next_byte+1 + + lda #0 + sta resource_counter + + lda #14 + jsr print_a ;switch to lower case + +@do_one_page: + + ldx page_counter + lda get_next_byte+1 + sta page_pointer_lo + lda get_next_byte+2 + sta page_pointer_hi + inc page_counter + + lda #0 + sta resource_counter + + lda #147 ; 'CLR/HOME' + jsr print_a + +@next_line: + jsr get_next_byte + cmp #'.' + bne @not_last_line + lda #1 + sta this_is_last_page + jmp @done +@not_last_line: + cmp #'i' + beq @info_line + cmp #'0' + beq @standard_resource + cmp #'1' + beq @standard_resource + + ;if we got here, we know not what it is + jmp @skip_to_end_of_line +@standard_resource: + ldx resource_counter + sta resource_type,x + lda get_next_byte+1 + sta resource_pointer_lo,x + lda get_next_byte+2 + sta resource_pointer_hi,x + inc resource_counter + lda $d3 + beq :+ + jsr print_cr +: + lda #18 + jsr print_a + lda resource_counter + clc + adc #'a'-1 + jsr print_a + lda #146 + jsr print_a + lda #' ' + jsr print_a + +@info_line: +@print_until_tab: +@next_byte: + jsr get_next_byte + cmp #$09 + beq @skip_to_end_of_line + tax + lda ascii_to_petscii_table,x + jsr print_a + jmp @next_byte + +@skip_to_end_of_line: + jsr get_next_byte + cmp #$0A + bne @skip_to_end_of_line + lda $d3 + cmp #0 + beq :+ + jsr print_cr +: + lda $d6 + cmp #23 + bmi @next_line + lda #0 + sta this_is_last_page +@done: + + jsr get_key + + lda this_is_last_page + bne @last_page + jmp @do_one_page +@last_page: + rts + +.rodata +input_buffer: +.incbin "rob_gopher.txt" +.incbin "retro_gopher.txt" +.byte 0 \ No newline at end of file