; ; File generated by cc65 v 2.12.9 ; .fopt compiler,"cc65 v 2.12.9" .setcpu "6502" .smart on .autoimport on .case on .debuginfo off .importzp sp, sreg, regsave, regbank, tmp1, ptr1, ptr2 .macpack longbranch .import _stdout .import _fflush .import _fputs .import _printf .import _putchar .import _puts .import _sprintf .import _atoi .import _exit .import _strcmp .import _strcpy .import _strlen .import _memcmp .import _memcpy .import _strcasecmp .import _toupper .import _get_ostype .import _kbhit .import _cgetc .import _cursor .import __clocks_per_sec .import _clock .import _timer_set .import _timer_reset .import _timer_expired .export _resolv_found .import _resolv_conf .import _resolv_init .import _resolv_query .import _telnet_send .export _telnet_connected .export _telnet_closed .export _telnet_sent .export _telnet_aborted .export _telnet_timedout .export _telnet_newdata .import _uip_init .import _uip_connect .import _htons .import _uip_len .import _uip_conn .import _uip_conns .import _uip_udp_conn .import _uip_udp_conns .import _uip_flags .import _uip_process .import _uip_hostaddr .import _uip_netmask .import _uip_draddr .import _uiplib_ipaddrconv .import _rs232dev_init .import _rs232dev_send .import _rs232dev_close .import _rs232dev_poll .import _atari_exec_p .import _config .import _format_ip .import _get_config .import _config_is_valid .import _get_line .import _set_default_config .import _disable_break .export _os_version .export _input_buf .export _chan_msg_buf .export _output_buf .export _channel .export _last_msg_nick .export _input_buf_len .export _output_buf_len .export _done .export _connected .export _joined_channel .export _nick_registered .export _vbell_active .export _bell .export _redraw_user_buffer .export _nick_reg_timer .export _tstate .export _vbell_timer .export _main .export _do_pong .export _do_server_msg .export _do_ctcp .export _do_msg .export _del_user_buffer .segment "DATA" _os_version: .byte $58,$4C,$5F,$58,$45,$00 .res 4,$00 _input_buf: .word $2900 _chan_msg_buf: .word $2A00 _output_buf: .word $2C00 _last_msg_nick: .byte $00 .res 20,$00 _input_buf_len: .word $0000 _output_buf_len: .word $0000 _done: .byte $00 _connected: .byte $00 _joined_channel: .byte $00 _nick_registered: .byte $00 _vbell_active: .byte $00 .segment "RODATA" L0001: .byte $38,$30,$30,$00,$31,$32,$30,$30,$58,$4C,$00,$C6,$F5,$EA,$E9,$C3 .byte $E8,$E1,$F4,$20,$76,$30,$2E,$35,$00,$53,$65,$72,$76,$65,$72,$20 .byte $6E,$61,$6D,$65,$2F,$49,$50,$2C,$20,$5B,$43,$5D,$6F,$6E,$66,$69 .byte $67,$2C,$20,$6F,$72,$20,$5B,$44,$5D,$4F,$53,$9B,$00,$5B,$25,$73 .byte $5D,$3A,$20,$00,$64,$00,$63,$00,$44,$3A,$46,$55,$4A,$49,$43,$4F .byte $4E,$46,$2E,$43,$4F,$4D,$00,$45,$72,$72,$6F,$72,$20,$25,$64,$21 .byte $9B,$00,$2A,$20,$52,$65,$67,$69,$73,$74,$65,$72,$69,$6E,$67,$20 .byte $6E,$69,$63,$6B,$00,$4E,$49,$43,$4B,$20,$25,$73,$25,$63,$55,$53 .byte $45,$52,$20,$25,$73,$20,$25,$73,$20,$25,$73,$20,$3A,$25,$73,$25 .byte $63,$00,$46,$75,$6A,$69,$43,$68,$61,$74,$00,$43,$6F,$6D,$6D,$61 .byte $6E,$64,$20,$72,$65,$71,$75,$69,$72,$65,$73,$20,$61,$72,$67,$75 .byte $6D,$65,$6E,$74,$00,$59,$6F,$75,$20,$61,$72,$65,$20,$6E,$6F,$74 .byte $20,$69,$6E,$20,$61,$20,$63,$68,$61,$6E,$6E,$65,$6C,$20,$28,$75 .byte $73,$65,$20,$2F,$6A,$6F,$69,$6E,$20,$23,$63,$68,$61,$6E,$6E,$65 .byte $6C,$29,$00,$59,$6F,$75,$20,$61,$72,$65,$20,$61,$6C,$72,$65,$61 .byte $64,$79,$20,$69,$6E,$20,$61,$20,$63,$68,$61,$6E,$6E,$65,$6C,$20 .byte $28,$75,$73,$65,$20,$2F,$70,$61,$72,$74,$20,$74,$6F,$20,$6C,$65 .byte $61,$76,$65,$29,$00,$4E,$41,$4D,$45,$53,$00,$57,$48,$4F,$00,$2F .byte $6D,$73,$67,$20,$25,$73,$20,$00,$50,$52,$49,$56,$4D,$53,$47,$20 .byte $25,$73,$20,$3A,$25,$73,$00,$25,$73,$20,$25,$73,$25,$63,$00,$25 .byte $73,$25,$63,$00,$50,$52,$49,$56,$4D,$53,$47,$20,$25,$73,$20,$25 .byte $63,$56,$45,$52,$53,$49,$4F,$4E,$25,$63,$25,$63,$00,$50,$52,$49 .byte $56,$4D,$53,$47,$20,$25,$73,$20,$25,$63,$50,$49,$4E,$47,$20,$25 .byte $30,$33,$64,$20,$25,$30,$33,$64,$20,$25,$30,$33,$64,$25,$63,$25 .byte $63,$00,$50,$52,$49,$56,$4D,$53,$47,$20,$25,$73,$20,$3A,$25,$63 .byte $41,$43,$54,$49,$4F,$4E,$20,$25,$73,$25,$63,$25,$63,$00,$4D,$45 .byte $00,$4D,$53,$47,$00,$4D,$00,$50,$52,$49,$56,$4D,$53,$47,$00,$4A .byte $4F,$49,$4E,$00,$4A,$00,$4A,$4F,$49,$4E,$00,$4A,$4F,$49,$4E,$00 .byte $50,$41,$52,$54,$00,$50,$41,$52,$54,$00,$56,$45,$52,$53,$49,$4F .byte $4E,$00,$56,$45,$52,$00,$50,$49,$4E,$47,$00,$4E,$49,$43,$4B,$00 .byte $2A,$20,$59,$6F,$75,$20,$61,$72,$65,$20,$6E,$6F,$77,$20,$6B,$6E .byte $6F,$77,$6E,$20,$61,$73,$20,$25,$73,$9B,$00,$51,$55,$4F,$54,$45 .byte $00,$43,$6F,$6E,$6E,$65,$63,$74,$65,$64,$20,$74,$6F,$20,$73,$65 .byte $72,$76,$65,$72,$00,$43,$6F,$6E,$6E,$65,$63,$74,$69,$6F,$6E,$20 .byte $63,$6C,$6F,$73,$65,$64,$00,$43,$6F,$6E,$6E,$65,$63,$74,$69,$6F .byte $6E,$20,$61,$62,$6F,$72,$74,$65,$64,$00,$43,$6F,$6E,$6E,$65,$63 .byte $74,$69,$6F,$6E,$20,$74,$69,$6D,$65,$64,$20,$6F,$75,$74,$00,$5B .byte $50,$49,$4E,$47,$2C,$50,$4F,$4E,$47,$5D,$00,$2A,$20,$54,$6F,$70 .byte $69,$63,$3A,$20,$25,$73,$00,$2A,$20,$54,$6F,$70,$69,$63,$20,$73 .byte $65,$74,$20,$62,$79,$20,$25,$73,$00,$2A,$20,$48,$69,$64,$69,$6E .byte $67,$20,$4D,$4F,$54,$44,$20,$28,$62,$65,$20,$70,$61,$74,$69,$65 .byte $6E,$74,$29,$00,$25,$64,$20,$25,$73,$00,$25,$73,$20,$25,$73,$00 .byte $50,$49,$4E,$47,$20,$00,$2A,$20,$25,$73,$20,$70,$69,$6E,$67,$20 .byte $74,$69,$6D,$65,$3A,$20,$25,$64,$2E,$25,$64,$9B,$00,$50,$52,$49 .byte $56,$4D,$53,$47,$00,$01,$41,$43,$54,$49,$4F,$4E,$20,$00,$2A,$20 .byte $25,$73,$20,$25,$73,$00,$25,$73,$20,$25,$73,$00,$01,$50,$49,$4E .byte $47,$20,$00,$4E,$4F,$54,$49,$43,$45,$20,$25,$73,$20,$3A,$01,$50 .byte $49,$4E,$47,$20,$25,$73,$01,$25,$63,$00,$2A,$20,$43,$54,$43,$50 .byte $20,$50,$49,$4E,$47,$20,$66,$72,$6F,$6D,$20,$25,$73,$9B,$00,$01 .byte $56,$45,$52,$53,$49,$4F,$4E,$01,$00,$4E,$4F,$54,$49,$43,$45,$20 .byte $25,$73,$20,$3A,$01,$56,$45,$52,$53,$49,$4F,$4E,$20,$46,$75,$6A .byte $69,$43,$68,$61,$74,$20,$76,$30,$2E,$35,$20,$2D,$20,$72,$75,$6E .byte $6E,$69,$6E,$67,$20,$6F,$6E,$20,$61,$6E,$20,$41,$74,$61,$72,$69 .byte $20,$25,$73,$01,$25,$63,$00,$2A,$20,$43,$54,$43,$50,$20,$56,$45 .byte $52,$53,$49,$4F,$4E,$20,$66,$72,$6F,$6D,$20,$25,$73,$9B,$00,$4D .byte $53,$47,$3A,$20,$25,$73,$20,$25,$73,$00,$4E,$4F,$54,$49,$43,$45 .byte $00,$2A,$20,$43,$54,$43,$50,$20,$72,$65,$70,$6C,$79,$20,$66,$72 .byte $6F,$6D,$20,$25,$73,$3A,$20,$25,$73,$00,$25,$73,$20,$25,$73,$20 .byte $25,$73,$20,$25,$73,$00,$25,$73,$20,$25,$73,$20,$25,$73,$00,$5B .byte $62,$75,$66,$66,$65,$72,$20,$6F,$76,$65,$72,$66,$6C,$6F,$77,$5D .byte $FD,$00,$50,$49,$4E,$47,$00,$48,$6F,$73,$74,$20,$27,$25,$73,$27 .byte $20,$6E,$6F,$74,$20,$66,$6F,$75,$6E,$64,$2E,$9B,$00,$25,$73,$20 .byte $69,$73,$20,$25,$73,$9B,$00 .segment "BSS" _channel: .res 64,$00 _nick_reg_timer: .res 4,$00 _tstate: .res 2,$00 _vbell_timer: .res 4,$00 ; --------------------------------------------------------------- ; void __near__ resolv_found (__near__ unsigned char*, __near__ unsigned int*) ; --------------------------------------------------------------- .segment "CODE" .proc _resolv_found: near .segment "CODE" ldy #$00 lda (sp),y iny ora (sp),y bne L0501 lda #<(L0001+967) ldx #>(L0001+967) jsr pushax ldy #$07 jsr pushwysp ldy #$04 jsr _printf lda #$01 sta _done jmp incsp4 L0501: lda #<(L0001+989) ldx #>(L0001+989) jsr pushax ldy #$07 jsr pushwysp ldy #$07 jsr pushwysp jsr _format_ip jsr pushax ldy #$06 jsr _printf lda _connected jne incsp4 jsr pushw0sp lda _config ldx _config+1 ldy #$53 jsr pushwidx jsr _htons jsr pushax jsr _uip_connect jmp incsp4 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_connected (__near__ struct telnet_state*) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_connected: near .segment "CODE" lda #<(L0001+513) ldx #>(L0001+513) jsr _puts jsr ldax0sp sta _tstate stx _tstate+1 jsr ldax0sp sta sreg stx sreg+1 lda #$00 ldy #$01 sta (sreg),y iny sta (sreg),y jsr ldax0sp sta sreg stx sreg+1 lda #$00 ldy #$03 sta (sreg),y iny sta (sreg),y lda #<(_nick_reg_timer) ldx #>(_nick_reg_timer) jsr pushax jsr __clocks_per_sec jsr pushax jsr _timer_set lda #$01 sta _connected jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_closed (__near__ struct telnet_state*) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_closed: near .segment "CODE" lda #<(L0001+533) ldx #>(L0001+533) jsr _puts lda #$10 sta _uip_flags lda #$01 sta _done jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_sent (__near__ struct telnet_state*) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_sent: near .segment "CODE" jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_aborted (__near__ struct telnet_state*) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_aborted: near .segment "CODE" lda #<(L0001+551) ldx #>(L0001+551) jsr _puts lda #$20 sta _uip_flags lda #$01 sta _done jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_timedout (__near__ struct telnet_state*) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_timedout: near .segment "CODE" lda #<(L0001+570) ldx #>(L0001+570) jsr _puts lda #$20 sta _uip_flags lda #$01 sta _done jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ telnet_newdata (__near__ struct telnet_state*, __near__ unsigned char*, unsigned int) ; --------------------------------------------------------------- .segment "CODE" .proc _telnet_newdata: near .segment "CODE" jsr pushw0sp jsr decsp1 ldy #$08 jsr pushwysp jsr pushc0 L04AF: ldy #$05 jsr ldaxysp sta regsave stx regsave+1 jsr decax1 ldy #$04 jsr staxysp lda regsave ora regsave+1 jeq L04B0 ldy #$02 jsr ldaxysp sta regsave stx regsave+1 jsr incax1 ldy #$01 jsr staxysp ldy #$00 lda (regsave),y ldy #$03 sta (sp),y cmp #$0A beq L04AF lda (sp),y cmp #$0D bne L04B8 lda #$9B sta (sp),y lda #$01 ldy #$00 jmp L0515 L04B8: lda (sp),y cmp #$09 bne L04BF lda #$7F jmp L0515 L04BF: lda (sp),y cmp #$7B bne L04C4 lda #$DB jmp L0515 L04C4: lda (sp),y cmp #$7D bne L04C9 lda #$DD jmp L0515 L04C9: lda (sp),y cmp #$7E bne L04CE lda #$DE jmp L0515 L04CE: lda (sp),y cmp #$60 bne L04D3 lda #$A7 L0515: sta (sp),y L04D3: lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 sta regsave stx regsave+1 jsr incax1 sta _output_buf_len stx _output_buf_len+1 lda regsave ldx regsave+1 jsr tosaddax sta sreg stx sreg+1 ldy #$03 lda (sp),y ldy #$00 sta (sreg),y lda _output_buf_len ldx _output_buf_len+1 jsr pushax ldx #$02 lda #$00 jsr tosicmp bmi L04DA lda #<(L0001+943) ldx #>(L0001+943) jsr _puts lda #$01 ldy #$00 sta (sp),y jmp L04B0 L04DA: ldy #$00 lda (sp),y jeq L04AF jsr _del_user_buffer lda _output_buf ldx _output_buf+1 clc adc _output_buf_len pha txa adc _output_buf_len+1 tax pla sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda _output_buf_len ldx _output_buf_len+1 jsr pushax lda #$05 jsr tosgea0 beq L04E6 lda _output_buf ldx _output_buf+1 jsr pushax lda #<(L0001+962) ldx #>(L0001+962) jsr pushax ldx #$00 lda #$04 jsr _memcmp cpx #$00 bne L04E6 cmp #$00 bne L04E6 jsr _do_pong jmp L04F5 L04E6: lda _output_buf ldx _output_buf+1 ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$3A bne L04F1 jsr _do_msg jmp L04F5 L04F1: lda _output_buf ldx _output_buf+1 jsr pushax lda _stdout ldx _stdout+1 jsr _fputs lda _stdout ldx _stdout+1 jsr _fflush L04F5: jsr _redraw_user_buffer lda #$00 sta _output_buf_len sta _output_buf_len+1 tay sta (sp),y jmp L04AF L04B0: ldy #$0C jmp addysp .endproc ; --------------------------------------------------------------- ; void __near__ handle_keystroke (void) ; --------------------------------------------------------------- .segment "CODE" .proc _handle_keystroke: near .segment "CODE" jsr decsp2 jsr pushc0 jsr _cgetc ldy #$01 sta (sp),y lda _input_buf_len ora _input_buf_len+1 jne L01A9 lda (sp),y cmp #$0E beq L01AB cmp #$17 beq L01B2 cmp #$7F beq L01BB cmp #$9B jeq incsp3 jmp L01A9 L01AB: lda _joined_channel jeq incsp3 lda #<(L0001+277) ldx #>(L0001+277) jsr pushax lda #<(_channel) ldx #>(_channel) jsr pushax jsr _send_server_cmd jmp incsp3 L01B2: lda _joined_channel jeq incsp3 lda #<(L0001+283) ldx #>(L0001+283) jsr pushax lda #<(_channel) ldx #>(_channel) jsr pushax jsr _send_server_cmd jmp incsp3 L01BB: lda _last_msg_nick jeq incsp3 lda _input_buf ldx _input_buf+1 jsr pushax lda #<(L0001+287) ldx #>(L0001+287) jsr pushax lda #<(_last_msg_nick) ldx #>(_last_msg_nick) jsr pushax ldy #$06 jsr _sprintf lda _input_buf ldx _input_buf+1 jsr _strlen sta _input_buf_len stx _input_buf_len+1 lda #$00 ldy #$02 L0519: sta (sp),y lda (sp),y jsr pusha0 lda _input_buf_len ldx _input_buf_len+1 jsr tosicmp jcs incsp3 lda _input_buf sta sreg lda _input_buf+1 sta sreg+1 ldy #$02 lda (sp),y clc adc sreg ldx sreg+1 bcc L0517 inx L0517: ldy #$00 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y ora #$80 jsr _putchar ldy #$02 lda (sp),y clc adc #$01 jmp L0519 L01A9: lda (sp),y cmp #$7E bne L01D2 lda _input_buf_len ldx _input_buf_len+1 jsr pushax lda #$01 jsr tosgea0 beq L01D4 lda _input_buf_len ldx _input_buf_len+1 jsr decax1 sta _input_buf_len stx _input_buf_len+1 ldy #$01 ldx #$00 lda (sp),y jsr _putchar jmp incsp3 L01D4: jsr _bell jmp incsp3 L01D2: lda (sp),y cmp #$9C beq L01DD lda (sp),y cmp #$15 bne L01DC L01DD: ldx #$00 txa sta _input_buf_len sta _input_buf_len+1 lda #$9C jsr _putchar jmp incsp3 L01DC: lda (sp),y cmp #$17 bne L01E4 jsr _del_last_word jmp incsp3 L01E4: ldx #$00 lda (sp),y ora #$80 jsr _putchar ldy #$01 lda (sp),y cmp #$9B bne L01E9 lda #$0A sta (sp),y tya dey jmp L0518 L01E9: lda (sp),y cmp #$7F bne L01F0 lda #$09 L0518: sta (sp),y L01F0: lda _input_buf ldx _input_buf+1 jsr pushax lda _input_buf_len ldx _input_buf_len+1 sta regsave stx regsave+1 jsr incax1 sta _input_buf_len stx _input_buf_len+1 lda regsave ldx regsave+1 jsr tosaddax sta sreg stx sreg+1 ldy #$01 lda (sp),y dey sta (sreg),y lda _input_buf_len ldx _input_buf_len+1 jsr pushax ldx #$01 lda #$00 jsr tosicmp bmi L01F9 ldy #$00 lda (sp),y bne L01F9 jsr _bell ldx #$00 lda #$7E jsr _putchar lda _input_buf_len ldx _input_buf_len+1 jsr decax1 sta _input_buf_len stx _input_buf_len+1 L01F9: ldy #$00 lda (sp),y jeq incsp3 lda _input_buf ldx _input_buf+1 clc adc _input_buf_len pha txa adc _input_buf_len+1 tax pla sta sreg stx sreg+1 tya sta (sreg),y lda _input_buf sta ptr1 lda _input_buf+1 sta ptr1+1 lda (ptr1),y cmp #$2F bne L0204 jsr _handle_command jmp L0214 L0204: lda _joined_channel beq L0208 lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+296) ldx #>(L0001+296) jsr pushax lda #<(_channel) ldx #>(_channel) jsr pushax lda _input_buf ldx _input_buf+1 jsr pushax ldy #$08 jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send jmp L0214 L0208: jsr _err_no_channel L0214: lda #$00 sta _input_buf_len sta _input_buf_len+1 jmp incsp3 .endproc ; --------------------------------------------------------------- ; void __near__ handle_command (void) ; --------------------------------------------------------------- .segment "CODE" .proc _handle_command: near .segment "CODE" lda _input_buf ldx _input_buf+1 jsr incax1 jsr pushax jsr decsp2 jsr push0 ldy #$07 jsr pushwysp L0261: jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$0A beq L0262 jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L0262 jsr pushw0sp ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 ldx #$00 lda (ptr1),y jsr _toupper ldy #$00 jsr staspidx ldx #$00 lda #$01 jsr addeq0sp jmp L0261 L0262: jsr ldax0sp ldy #$04 jsr staxysp jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$0A beq L026E jsr ldax0sp ldy #$02 jsr staxysp L0272: ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 bne L0273 ldy #$02 ldx #$00 lda #$01 jsr addeqysp jmp L0272 L0273: ldy #$03 jsr ldaxysp jsr incax1 jsr stax0sp L0278: jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y beq L0279 jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$0A beq L0279 ldx #$00 lda #$01 jsr addeq0sp jmp L0278 L0279: jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y L026E: ldy #$05 jsr ldaxysp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$09 jsr pushwysp lda #<(L0001+414) ldx #>(L0001+414) jsr _strcmp cpx #$00 bne L0283 cmp #$00 bne L0283 lda _joined_channel bne L0288 jsr _err_no_channel jmp incsp8 L0288: ldy #$03 lda (sp),y dey ora (sp),y bne L028C jsr _err_missing_arg jmp incsp8 L028C: ldy #$05 jsr pushwysp jsr _do_me jmp incsp8 L0283: ldy #$09 jsr pushwysp lda #<(L0001+417) ldx #>(L0001+417) jsr _strcmp cpx #$00 bne L051B cmp #$00 beq L0294 L051B: ldy #$09 jsr pushwysp lda #<(L0001+421) ldx #>(L0001+421) jsr _strcmp cpx #$00 bne L0293 cmp #$00 bne L0293 L0294: ldy #$03 lda (sp),y dey ora (sp),y bne L029C jsr _err_missing_arg jmp incsp8 L029C: lda #<(L0001+423) ldx #>(L0001+423) jmp L0524 L0293: ldy #$09 jsr pushwysp lda #<(L0001+431) ldx #>(L0001+431) jsr _strcmp cpx #$00 bne L051D cmp #$00 beq L02A5 L051D: ldy #$09 jsr pushwysp lda #<(L0001+436) ldx #>(L0001+436) jsr _strcmp cpx #$00 bne L02A4 cmp #$00 bne L02A4 L02A5: lda _joined_channel beq L02AD ldy #$03 lda (sp),y dey ora (sp),y beq L02AF jsr _err_already_joined jmp incsp8 L02AF: lda #<(L0001+438) ldx #>(L0001+438) jsr pushax lda #<(_channel) ldx #>(_channel) jmp L0521 L02AD: ldy #$03 lda (sp),y dey ora (sp),y beq L02B7 lda #$01 sta _joined_channel lda #<(_channel) ldx #>(_channel) jsr pushax ldy #$05 jsr ldaxysp jsr _strcpy lda #<(L0001+443) ldx #>(L0001+443) jmp L0524 L02B7: jsr _err_missing_arg jmp incsp8 L02A4: ldy #$09 jsr pushwysp lda #<(L0001+448) ldx #>(L0001+448) jsr _strcmp cpx #$00 bne L02C4 cmp #$00 bne L02C4 lda _joined_channel bne L02C9 jsr _err_no_channel jmp incsp8 L02C9: txa sta _joined_channel lda #<(L0001+453) ldx #>(L0001+453) jsr pushax lda #<(_channel) ldx #>(_channel) jmp L0521 L02C4: ldy #$09 jsr pushwysp lda #<(L0001+458) ldx #>(L0001+458) jsr _strcmp cpx #$00 bne L051F cmp #$00 beq L02D4 L051F: ldy #$09 jsr pushwysp lda #<(L0001+466) ldx #>(L0001+466) jsr _strcmp cpx #$00 bne L02D3 cmp #$00 bne L02D3 L02D4: ldy #$03 lda (sp),y dey ora (sp),y bne L02DC jsr _err_missing_arg jmp incsp8 L02DC: ldy #$05 jsr pushwysp jsr _send_ctcp_version jmp incsp8 L02D3: ldy #$09 jsr pushwysp lda #<(L0001+470) ldx #>(L0001+470) jsr _strcmp cpx #$00 bne L02E3 cmp #$00 bne L02E3 ldy #$03 lda (sp),y dey ora (sp),y bne L02E8 jsr _err_missing_arg jmp incsp8 L02E8: ldy #$05 jsr pushwysp jsr _send_ctcp_ping jmp incsp8 L02E3: ldy #$09 jsr pushwysp lda #<(L0001+475) ldx #>(L0001+475) jsr _strcmp cpx #$00 bne L02EF cmp #$00 bne L02EF ldy #$03 lda (sp),y dey ora (sp),y bne L02F4 jsr _err_missing_arg jmp incsp8 L02F4: lda _config ldx _config+1 ldy #$54 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp jsr _strcpy ldy #$09 jsr pushwysp ldy #$07 jsr pushwysp jsr _send_server_cmd lda #<(L0001+480) ldx #>(L0001+480) jsr pushax lda _config ldx _config+1 ldy #$54 jsr incaxy jsr pushax ldy #$04 jsr _printf jmp incsp8 L02EF: ldy #$09 jsr pushwysp lda #<(L0001+507) ldx #>(L0001+507) jsr _strcmp cpx #$00 bne L0302 cmp #$00 bne L0302 ldy #$03 lda (sp),y dey ora (sp),y bne L0307 jsr _err_missing_arg jmp incsp8 L0307: ldy #$05 jsr pushwysp ldx #$00 txa jmp L0521 L0302: ldy #$07 jsr ldaxysp L0524: jsr pushax ldy #$05 jsr ldaxysp L0521: jsr pushax jsr _send_server_cmd jmp incsp8 .endproc ; --------------------------------------------------------------- ; void __near__ send_server_cmd (__near__ unsigned char*, __near__ unsigned char*) ; --------------------------------------------------------------- .segment "CODE" .proc _send_server_cmd: near .segment "CODE" ldy #$01 lda (sp),y dey ora (sp),y beq L0219 lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+311) ldx #>(L0001+311) jsr pushax ldy #$09 jsr pushwysp ldy #$09 jsr pushwysp lda #$0A jsr pusha0 tay jmp L0525 L0219: lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+319) ldx #>(L0001+319) jsr pushax ldy #$09 jsr pushwysp lda #$0A jsr pusha0 ldy #$08 L0525: jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send jmp incsp4 .endproc ; --------------------------------------------------------------- ; void __near__ bell (void) ; --------------------------------------------------------------- .segment "CODE" .proc _bell: near .segment "CODE" lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$08 bne L015D lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$20 beq L0160 lda #$01 sta _vbell_active lda #<(_vbell_timer) ldx #>(_vbell_timer) jsr pushax jsr __clocks_per_sec jsr pushax lda #$0A jsr tosudiva0 jsr pushax jsr _timer_set lda _config ldx _config+1 ldy #$93 sta ptr1 stx ptr1+1 lda (ptr1),y clc adc #$08 sta $02C6 rts L0160: ldx #$00 lda #$FD jmp _putchar L015D: rts .endproc ; --------------------------------------------------------------- ; void __near__ redraw_user_buffer (void) ; --------------------------------------------------------------- .segment "CODE" .proc _redraw_user_buffer: near .segment "CODE" jsr decsp2 ldx #$28 lda #$00 jsr pushax lda _input_buf_len ora _input_buf_len+1 jeq incsp4 lda _input_buf_len ldx _input_buf_len+1 jsr decax1 ldy #$02 jsr staxysp L049B: jsr ldax0sp sta sreg stx sreg+1 ldy #$03 jsr ldaxysp clc adc sreg sta sreg txa adc sreg+1 tax lda sreg sta ptr2 stx ptr2+1 lda _input_buf sta sreg lda _input_buf+1 sta sreg+1 ldy #$03 jsr ldaxysp clc adc sreg sta sreg txa adc sreg+1 tax lda sreg ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y ora #$80 sta (ptr2),y ldy #$03 jsr ldaxysp sta regsave stx regsave+1 jsr decax1 ldy #$02 jsr staxysp lda regsave ora regsave+1 bne L049B jsr ldax0sp clc adc _input_buf_len pha txa adc _input_buf_len+1 tax pla sta sreg stx sreg+1 lda #$00 tay sta (sreg),y jsr pushw0sp lda _stdout ldx _stdout+1 jsr _fputs lda _stdout ldx _stdout+1 jsr _fflush jmp incsp4 .endproc ; --------------------------------------------------------------- ; void __near__ main (void) ; --------------------------------------------------------------- .segment "CODE" .proc _main: near .segment "CODE" ldy #$4C jsr subysp jsr _disable_break jsr _get_ostype and #$07 ldy #$4B sta (sp),y cmp #$01 bne L003B ldy #$FF L0040: iny lda L0001,y sta _os_version,y bne L0040 jmp L0042 L003B: lda (sp),y cmp #$02 bne L0042 ldy #$FF L0047: iny lda L0001+4,y sta _os_version,y bne L0047 L0042: lda #$01 jsr _cursor lda #$00 sta $02C6 lda #$0C sta $02C5 ldx #$00 lda #$7D jsr _putchar lda #<(L0001+11) ldx #>(L0001+11) jsr _puts ldx #$00 lda #$9B jsr _putchar jsr _config_is_valid tax bne L005C jsr _get_config tax bne L005C jsr _set_default_config L005C: lda _config ldx _config+1 sta sreg stx sreg+1 ldy #$96 jsr ldaxidx pha txa ora #$10 tax pla ldy #$95 sta (sreg),y iny txa sta (sreg),y L0061: lda #$00 sta _done jsr _rs232dev_close lda _config ldx _config+1 ldy #$93 sta ptr1 stx ptr1+1 lda (ptr1),y sta $02C6 lda _config ldx _config+1 iny sta ptr1 stx ptr1+1 lda (ptr1),y sta $02C5 lda #<(L0001+25) ldx #>(L0001+25) jsr pushax ldy #$02 jsr _printf lda #<(L0001+61) ldx #>(L0001+61) jsr pushax lda _config ldx _config+1 ldy #$11 jsr incaxy jsr pushax ldy #$04 jsr _printf lda _stdout ldx _stdout+1 jsr _fflush lda sp ldx sp+1 jsr pushax lda #$40 jsr pusha jsr _get_line lda sp ldx sp+1 jsr pushax lda #<(L0001+68) ldx #>(L0001+68) jsr _strcasecmp cpx #$00 bne L007B cmp #$00 bne L007B jsr _exit jmp L0092 L007B: lda sp ldx sp+1 jsr pushax lda #<(L0001+70) ldx #>(L0001+70) jsr _strcasecmp cpx #$00 bne L0083 cmp #$00 bne L0083 lda _atari_exec_p ldx _atari_exec_p+1 jsr pushax lda #<(L0001+72) ldx #>(L0001+72) pha ldy #$00 lda (sp),y sta jmpvec+1 iny lda (sp),y sta jmpvec+2 pla jsr jmpvec jsr incsp2 ldy #$49 jsr staxysp lda #<(L0001+87) ldx #>(L0001+87) jsr pushax ldy #$4E jsr pushwysp ldy #$04 jsr _printf ldy #$00 jsr _bell jmp L0061 L0083: ldy #$00 lda (sp),y beq L0092 lda _config ldx _config+1 ldy #$11 jsr incaxy jsr pushax lda #$02 jsr leaasp jsr _strcpy L0092: lda _config ldx _config+1 ldy #$10 sta ptr1 stx ptr1+1 lda (ptr1),y jsr pusha jsr _rs232dev_init cmp #$00 jne L0061 lda #$41 jsr leaasp jsr pushax jsr __clocks_per_sec jsr shrax1 jsr pushax jsr _timer_set jsr _uip_init lda #<(_uip_hostaddr) ldx #>(_uip_hostaddr) jsr pushax lda _config ldx _config+1 jsr incax4 jsr pushax ldx #$00 lda #$04 jsr _memcpy lda #<(_uip_draddr) ldx #>(_uip_draddr) jsr pushax lda _config ldx _config+1 jsr incax8 jsr pushax ldx #$00 lda #$04 jsr _memcpy lda #$45 jsr leaasp sta sreg stx sreg+1 lda #$FF ldy #$00 sta (sreg),y iny sta (sreg),y lda #$45 jsr leaasp sta sreg stx sreg+1 lda #$FF iny sta (sreg),y iny lda #$00 sta (sreg),y lda #<(_uip_netmask) ldx #>(_uip_netmask) jsr pushax lda #$47 jsr leaasp jsr ldaxi ldy #$00 jsr staxspidx lda #<(_uip_netmask) ldx #>(_uip_netmask) jsr pushax lda #$47 jsr leaasp ldy #$03 jsr ldaxidx ldy #$02 jsr staxspidx lda _config ldx _config+1 ldy #$11 jsr incaxy jsr pushax lda #$47 jsr leaasp jsr pushax jsr _uiplib_ipaddrconv tax beq L00E3 lda #$45 jsr leaasp jsr pushax lda _config ldx _config+1 ldy #$53 jsr pushwidx jsr _htons jsr pushax jsr _uip_connect jmp L00EB L00E3: jsr _resolv_init lda _config ldx _config+1 ldy #$0C jsr incaxy jsr pushax jsr _resolv_conf lda _config ldx _config+1 ldy #$11 jsr incaxy jsr pushax jsr _resolv_query L00EB: lda _done jne L00F3 jsr _rs232dev_poll sta _uip_len stx _uip_len+1 cpx #$00 bne L0526 cmp #$00 beq L00F7 L0526: jsr pushc1 jsr _uip_process lda _uip_len ora _uip_len+1 jeq L011C jsr _rs232dev_send jmp L011C L00F7: lda #$41 jsr leaasp jsr pushax jsr _timer_expired stx tmp1 ora tmp1 jeq L011C lda #$41 jsr leaasp jsr pushax jsr _timer_reset ldx #$00 txa L0529: ldy #$49 jsr staxysp jsr pushax lda #$01 jsr toslta0 beq L0107 ldy #$4A jsr ldaxysp jsr pushax lda #$23 jsr tosmula0 clc adc #<(_uip_conns) tay txa adc #>(_uip_conns) tax tya sta _uip_conn stx _uip_conn+1 jsr pushc2 jsr _uip_process lda _uip_len ora _uip_len+1 beq L0108 jsr _rs232dev_send L0108: ldy #$4A jsr ldaxysp jsr incax1 jmp L0529 L0107: ldx #$00 txa L052A: ldy #$49 jsr staxysp jsr pushax lda #$01 jsr toslta0 beq L011C ldy #$4A jsr ldaxysp jsr pushax lda #$0B jsr tosmula0 clc adc #<(_uip_udp_conns) tay txa adc #>(_uip_udp_conns) tax tya sta _uip_udp_conn stx _uip_udp_conn+1 lda #$05 jsr pusha jsr _uip_process lda _uip_len ora _uip_len+1 beq L011D jsr _rs232dev_send L011D: ldy #$4A jsr ldaxysp jsr incax1 jmp L052A L011C: lda _vbell_active beq L0130 lda #<(_vbell_timer) ldx #>(_vbell_timer) jsr pushax jsr _timer_expired stx tmp1 ora tmp1 beq L0130 lda _config ldx _config+1 ldy #$93 sta ptr1 stx ptr1+1 lda (ptr1),y sta $02C6 lda #$00 sta _vbell_active L0130: jsr _kbhit tax beq L013C jsr _handle_keystroke L013C: lda _connected jeq L00EB lda _nick_registered jne L00EB lda #<(_nick_reg_timer) ldx #>(_nick_reg_timer) jsr pushax jsr _timer_expired stx tmp1 ora tmp1 jeq L00EB lda #<(L0001+98) ldx #>(L0001+98) jsr _puts lda _input_buf ldx _input_buf+1 jsr pushax lda #<(L0001+117) ldx #>(L0001+117) jsr pushax lda _config ldx _config+1 ldy #$54 jsr incaxy jsr pushax lda #$0A jsr pusha0 lda _config ldx _config+1 ldy #$54 jsr incaxy jsr pushax lda #<(L0001+146) ldx #>(L0001+146) jsr pushax lda _config ldx _config+1 ldy #$11 jsr incaxy jsr pushax lda _config ldx _config+1 ldy #$69 jsr incaxy jsr pushax lda #$0A jsr pusha0 ldy #$12 jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _input_buf ldx _input_buf+1 jsr pushax lda _input_buf ldx _input_buf+1 jsr _strlen jsr pushax jsr _telnet_send lda #$00 sta _input_buf_len sta _input_buf_len+1 lda #$01 sta _nick_registered jmp L00EB L00F3: lda #$00 sta _joined_channel sta _nick_registered sta _connected jmp L0061 .endproc ; --------------------------------------------------------------- ; void __near__ err_missing_arg (void) ; --------------------------------------------------------------- .segment "CODE" .proc _err_missing_arg: near .segment "CODE" lda #<(L0001+155) ldx #>(L0001+155) jsr _puts jmp _bell .endproc ; --------------------------------------------------------------- ; void __near__ err_no_channel (void) ; --------------------------------------------------------------- .segment "CODE" .proc _err_no_channel: near .segment "CODE" lda #<(L0001+181) ldx #>(L0001+181) jsr _puts jmp _bell .endproc ; --------------------------------------------------------------- ; void __near__ err_already_joined (void) ; --------------------------------------------------------------- .segment "CODE" .proc _err_already_joined: near .segment "CODE" lda #<(L0001+227) ldx #>(L0001+227) jsr _puts jmp _bell .endproc ; --------------------------------------------------------------- ; void __near__ del_last_word (void) ; --------------------------------------------------------------- .segment "CODE" .proc _del_last_word: near .segment "CODE" lda _input_buf_len ldx _input_buf_len+1 jsr pushax jsr push0 L017E: lda _input_buf_len ora _input_buf_len+1 beq L017F lda _input_buf ldx _input_buf+1 clc adc _input_buf_len pha txa adc _input_buf_len+1 tax pla ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 bne L017F ldx #$00 lda #$01 jsr addeq0sp lda _input_buf_len ldx _input_buf_len+1 jsr decax1 sta _input_buf_len stx _input_buf_len+1 jmp L017E L017F: lda _input_buf_len ora _input_buf_len+1 beq L0187 lda _input_buf ldx _input_buf+1 clc adc _input_buf_len pha txa adc _input_buf_len+1 tax pla ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L0187 ldx #$00 lda #$01 jsr addeq0sp lda _input_buf_len ldx _input_buf_len+1 jsr decax1 sta _input_buf_len stx _input_buf_len+1 jmp L017F L0187: ldy #$05 jsr pushwysp lda #$79 jsr tosgea0 beq L018E lda _input_buf_len ldx _input_buf_len+1 jsr pushax lda #$79 jsr toslta0 beq L018E ldx #$00 lda #$1C jsr _putchar ldx #$00 lda #$9C jsr _putchar ldx #$00 lda #$9C jsr _putchar ldy #$00 jsr _redraw_user_buffer jmp incsp4 L018E: ldx #$00 lda #$7E jsr _putchar ldx #$00 lda #$01 ldy #$00 jsr subeqysp stx tmp1 ora tmp1 bne L018E jmp incsp4 .endproc ; --------------------------------------------------------------- ; void __near__ send_ctcp_version (__near__ unsigned char*) ; --------------------------------------------------------------- .segment "CODE" .proc _send_ctcp_version: near .segment "CODE" lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+324) ldx #>(L0001+324) jsr pushax ldy #$07 jsr pushwysp jsr push1 jsr push1 lda #$0A jsr pusha0 ldy #$0C jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ send_ctcp_ping (__near__ unsigned char*) ; --------------------------------------------------------------- .segment "CODE" .proc _send_ctcp_ping: near .segment "CODE" lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+349) ldx #>(L0001+349) jsr pushax ldy #$07 jsr pushwysp jsr push1 lda $0014 jsr pusha0 lda $0013 jsr pusha0 lda $0012 jsr pusha0 jsr push1 lda #$0A jsr pusha0 ldy #$12 jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ do_me (__near__ unsigned char*) ; --------------------------------------------------------------- .segment "CODE" .proc _do_me: near .segment "CODE" lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+386) ldx #>(L0001+386) jsr pushax lda #<(_channel) ldx #>(_channel) jsr pushax jsr push1 ldy #$0B jsr pushwysp jsr push1 lda #$0A jsr pusha0 ldy #$0E jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ do_pong (void) ; --------------------------------------------------------------- .segment "CODE" .proc _do_pong: near .segment "CODE" lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 jsr _memcpy lda _chan_msg_buf sta sreg lda _chan_msg_buf+1 sta sreg+1 lda #$4F ldy #$01 sta (sreg),y L0343: jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y beq L0344 jsr ldax0sp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$9B bne L0346 jsr ldax0sp sta sreg stx sreg+1 lda #$0A ldy #$00 sta (sreg),y L0346: jsr ldax0sp jsr incax1 jsr stax0sp jmp L0343 L0344: lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 jsr pushax jsr _telnet_send lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$40 jeq incsp2 lda #<(L0001+591) ldx #>(L0001+591) jsr _puts jmp incsp2 .endproc ; --------------------------------------------------------------- ; void __near__ do_server_msg (void) ; --------------------------------------------------------------- .segment "CODE" .proc _do_server_msg: near .segment "CODE" lda _output_buf ldx _output_buf+1 jsr pushax jsr decsp6 jsr push0 jsr decsp2 L0356: ldy #$0B jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L0357 ldy #$0A ldx #$00 lda #$01 jsr addeqysp jmp L0356 L0357: ldy #$0A ldx #$00 lda #$01 jsr addeqysp ldy #$0B jsr ldaxysp ldy #$08 jsr staxysp L035D: ldy #$09 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L035E ldy #$08 ldx #$00 lda #$01 jsr addeqysp jmp L035D L035E: ldy #$09 jsr ldaxysp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$08 tax lda #$01 jsr addeqysp lda _config ldx _config+1 ldy #$54 jsr incaxy jsr _strlen jsr stax0sp ldy #$0B jsr pushwysp lda _config ldx _config+1 ldy #$54 jsr incaxy jsr pushax ldy #$05 jsr ldaxysp jsr _memcmp cpx #$00 bne L0367 cmp #$00 bne L0367 jsr ldax0sp jsr incax1 ldy #$08 jsr addeqysp L0367: ldy #$0B jsr ldaxysp jsr _atoi ldy #$02 jsr staxysp stx tmp1 ora tmp1 jeq L0370 ldy #$03 jsr ldaxysp cpx #$01 jne L039D cmp #$3B jeq L038C cmp #$4C beq L0379 cmp #$4D beq L037E cmp #$60 beq L038C cmp #$61 beq L038C cmp #$6E beq L038C cmp #$74 beq L0383 cmp #$76 beq L038C cmp #$77 beq L038B jmp L039D L0379: lda #<(L0001+603) ldx #>(L0001+603) jsr pushax ldy #$0D jsr pushwysp ldy #$04 jmp L052B L037E: lda #<(L0001+615) ldx #>(L0001+615) jsr pushax ldy #$0D jsr pushwysp ldy #$04 jmp L052B L0383: lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$10 tax lda #$00 jsr bnegax beq L03A2 ldy #$0B jsr pushwysp lda _stdout ldx _stdout+1 jsr _fputs jmp L03A2 L038B: lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$10 beq L038C lda #<(L0001+633) ldx #>(L0001+633) jsr _puts jmp L03A2 L038C: ldy #$0B jsr pushwysp lda _stdout ldx _stdout+1 jsr _fputs jmp L03A2 L039D: lda #<(L0001+660) ldx #>(L0001+660) jsr pushax ldy #$05 jmp L0531 L0370: lda #<(L0001+666) ldx #>(L0001+666) jsr pushax ldy #$0D L0531: jsr ldaxysp jsr pushax ldy #$0F jsr pushwysp ldy #$06 L052B: jsr _printf L03A2: ldy #$0C jmp addysp .endproc ; --------------------------------------------------------------- ; unsigned char __near__ do_ctcp (__near__ unsigned char*, __near__ unsigned char*) ; --------------------------------------------------------------- .segment "CODE" .proc _do_ctcp: near .segment "CODE" ldy #$0C jsr subysp ldy #$0F jsr pushwysp lda #<(L0001+672) ldx #>(L0001+672) jsr pushax ldx #$00 lda #$05 jsr _memcmp cpx #$00 jne L03A8 cmp #$00 jne L03A8 jsr _clock jsr pusheax ldx #$00 stx sreg stx sreg+1 lda #$0A jsr tosumuleax ldy #$08 jsr steaxysp ldy #$0D jsr ldaxysp jsr incax5 jsr _atoi jsr axlong jsr pusheax ldy #$11 jsr ldaxysp ldy #$09 jsr incaxy jsr _atoi jsr axlong ldy sreg sty sreg+1 stx sreg tax lda #$00 jsr tosaddeax jsr pusheax ldy #$11 jsr ldaxysp ldy #$0D jsr incaxy jsr _atoi jsr axlong stx sreg+1 sta sreg lda #$00 tax jsr tosaddeax jsr pusheax ldx #$00 stx sreg stx sreg+1 lda #$0A jsr tosmuleax ldy #$04 jsr steaxysp ldy #$07 jsr ldeaxysp ldy #$08 jsr lsubeqysp ldy #$0B jsr ldeaxysp jsr pusheax jsr __clocks_per_sec jsr axulong jsr tosudiveax ldy #$08 jsr steaxysp ldy #$0B jsr ldeaxysp jsr pusheax ldx #$00 stx sreg stx sreg+1 lda #$0A jsr tosdiveax ldy #$02 jsr staxysp ldy #$0B jsr ldeaxysp jsr pusheax ldx #$00 stx sreg stx sreg+1 lda #$0A jsr tosmodeax jsr stax0sp lda #<(L0001+678) ldx #>(L0001+678) jsr pushax ldy #$13 jsr pushwysp ldy #$09 jsr pushwysp ldy #$09 jsr pushwysp ldy #$08 jsr _printf ldx #$00 lda #$01 jmp L03A7 L03A8: ldx #$00 txa L03A7: ldy #$10 jmp addysp .endproc ; --------------------------------------------------------------- ; void __near__ do_msg (void) ; --------------------------------------------------------------- .segment "CODE" .proc _do_msg: near .segment "CODE" lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf ldx _output_buf+1 jsr pushax jsr push0 jsr push0 jsr push0 L03D0: ldy #$07 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L03D1 ldy #$07 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$21 bne L03D3 ldy #$07 jsr ldaxysp jsr stax0sp L03D3: ldy #$06 ldx #$00 lda #$01 jsr addeqysp jmp L03D0 L03D1: iny lda (sp),y dey ora (sp),y bne L03D8 jsr _do_server_msg jmp L03CA L03D8: ldy #$07 jsr ldaxysp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$06 tax lda #$01 jsr addeqysp ldy #$07 jsr ldaxysp ldy #$04 jsr staxysp L03E0: ldy #$05 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L03E1 ldy #$04 ldx #$00 lda #$01 jsr addeqysp jmp L03E0 L03E1: ldy #$05 jsr ldaxysp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$04 tax lda #$01 jsr addeqysp ldy #$05 jsr ldaxysp ldy #$02 jsr staxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$9B beq L03F6 L03EB: ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y beq L03EC ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$20 beq L03EC ldy #$02 ldx #$00 lda #$01 jsr addeqysp jmp L03EB L03EC: ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y beq L03F6 ldy #$03 jsr ldaxysp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$02 tax lda #$01 jsr addeqysp ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$3A bne L03F6 ldy #$02 ldx #$00 lda #$01 jsr addeqysp L03F6: ldy #$09 jsr pushwysp lda #<(L0001+701) ldx #>(L0001+701) jsr _strcmp cpx #$00 jne L03F9 cmp #$00 jne L03F9 ldy #$09 jsr ldaxysp sta sreg stx sreg+1 lda #$3C ldy #$00 sta (sreg),y jsr ldax0sp sta sreg stx sreg+1 lda #$3E ldy #$00 sta (sreg),y jsr ldax0sp sta sreg stx sreg+1 lda #$00 ldy #$01 sta (sreg),y ldy #$07 jsr pushwysp lda _config ldx _config+1 ldy #$54 jsr incaxy jsr _strcasecmp cpx #$00 bne L0533 cmp #$00 jeq L0407 L0533: ldy #$05 jsr pushwysp lda #<(L0001+709) ldx #>(L0001+709) jsr pushax ldx #$00 lda #$08 jsr _memcmp cpx #$00 bne L040C cmp #$00 bne L040C ldy #$09 jsr ldaxysp jsr incax1 ldy #$08 jsr staxysp jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 jsr decax2 jsr tosaddax sta sreg stx sreg+1 lda #$9B ldy #$00 sta (sreg),y lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 jsr decax1 jsr tosaddax sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda #<(L0001+718) ldx #>(L0001+718) jsr pushax ldy #$0D jsr pushwysp ldy #$07 jsr ldaxysp jsr incax8 jsr pushax ldy #$06 jmp L0532 L040C: lda #<(L0001+726) ldx #>(L0001+726) jsr pushax ldy #$0D jsr pushwysp ldy #$09 jsr pushwysp ldy #$06 jmp L0532 L0407: ldy #$05 jsr pushwysp lda #<(L0001+732) ldx #>(L0001+732) jsr pushax ldx #$00 lda #$06 jsr _memcmp cpx #$00 jne L0425 cmp #$00 jne L0425 ldy #$09 jsr ldaxysp jsr incax1 ldy #$08 jsr staxysp jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda _output_buf ldx _output_buf+1 jsr pushax lda _output_buf_len ldx _output_buf_len+1 jsr decax2 jsr tosaddax sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+739) ldx #>(L0001+739) jsr pushax ldy #$0F jsr pushwysp ldy #$09 jsr ldaxysp jsr incax6 jsr pushax lda #$0A jsr pusha0 tay jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send lda #<(L0001+762) ldx #>(L0001+762) jsr pushax ldy #$0D jsr pushwysp ldy #$04 jmp L0532 L0425: ldy #$05 jsr pushwysp lda #<(L0001+783) ldx #>(L0001+783) jsr pushax ldx #$00 lda #$09 jsr _memcmp cpx #$00 bne L0440 cmp #$00 bne L0440 ldy #$09 jsr ldaxysp jsr incax1 ldy #$08 jsr staxysp jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda #<(L0001+793) ldx #>(L0001+793) jsr pushax ldy #$0F jsr pushwysp lda #<(_os_version) ldx #>(_os_version) jsr pushax lda #$0A jsr pusha0 tay jsr _sprintf lda _tstate ldx _tstate+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr pushax lda _chan_msg_buf ldx _chan_msg_buf+1 jsr _strlen jsr pushax jsr _telnet_send lda #<(L0001+855) ldx #>(L0001+855) jsr pushax ldy #$0D jsr pushwysp ldy #$04 jmp L0532 L0440: lda #<(L0001+879) ldx #>(L0001+879) jsr pushax ldy #$0D jsr pushwysp ldy #$09 jsr pushwysp ldy #$06 jsr _printf lda _config ldx _config+1 ldy #$96 jsr ldaxidx txa and #$80 beq L045C jsr _bell L045C: jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y lda #<(_last_msg_nick) ldx #>(_last_msg_nick) jsr pushax ldy #$0B jsr ldaxysp jsr incax1 jsr _strcpy jmp L0482 L03F9: ldy #$09 jsr pushwysp lda #<(L0001+890) ldx #>(L0001+890) jsr _strcmp cpx #$00 bne L0465 cmp #$00 bne L0465 ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y cmp #$01 bne L0465 ldy #$09 jsr ldaxysp jsr incax1 ldy #$08 jsr staxysp jsr ldax0sp sta sreg stx sreg+1 lda #$00 tay sta (sreg),y ldy #$0B jsr pushwysp ldy #$05 jsr ldaxysp jsr incax1 jsr pushax jsr _do_ctcp tax bne L0482 lda #<(L0001+897) ldx #>(L0001+897) jsr pushax ldy #$0D jsr pushwysp ldy #$07 jsr ldaxysp jsr incax1 jsr pushax ldy #$06 jmp L0532 L0465: ldy #$03 jsr ldaxysp ldy #$00 sta ptr1 stx ptr1+1 lda (ptr1),y beq L047A lda #<(L0001+922) ldx #>(L0001+922) jsr pushax ldy #$0D jsr pushwysp ldy #$0D jsr pushwysp ldy #$0D jsr pushwysp ldy #$0D jsr pushwysp ldy #$0A jmp L0532 L047A: lda #<(L0001+934) ldx #>(L0001+934) jsr pushax ldy #$0D jsr pushwysp ldy #$0D jsr pushwysp ldy #$0D jsr pushwysp ldy #$08 L0532: jsr _printf L0482: lda _stdout ldx _stdout+1 jsr _fflush L03CA: ldy #$0A jmp addysp .endproc ; --------------------------------------------------------------- ; void __near__ del_user_buffer (void) ; --------------------------------------------------------------- .segment "CODE" .proc _del_user_buffer: near .segment "CODE" lda _input_buf_len ora _input_buf_len+1 beq L048F ldx #$00 lda #$9C jsr _putchar lda _input_buf_len ldx _input_buf_len+1 jsr pushax lda #$78 jsr tosgea0 beq L048F ldx #$00 lda #$1C jsr _putchar ldx #$00 lda #$9C jmp _putchar L048F: rts .endproc