Код:
; Copyright 2024 TIsland Crew
; SPDX-License-Identifier: Apache-2.0
DEVICE ZXSPECTRUM48
ORG 23755
MODULE BASIC
INCLUDE "BasicLib.asm"
START:
LINE : db clear : NUM 32767 : LEND
LINE : db load,'"', 'ESP576.C','"',code : LEND
LINE : db rand, usr : NUM _start : LEND
END equ $
ENDMODULE ; BASIC
ORG 0x8000
IFNDEF __MACRO_SYSCALL
IFDEF __ESXDOS_DOT_COMMAND
MACRO SYSCALL adr
rst 0x18
dw adr
ENDM
ELSE
MACRO SYSCALL adr
call adr
ENDM
ENDIF;__ESXDOS_DOT_COMMAND
DEFINE __MACRO_SYSCALL
ENDIF;__MACRO_SYSCALL
_start:
ld a, 2 ; upper/main screen channel
call 0x1601 ; CHAN-OPEN - https://skoolkid.github.io/rom/asm/1601.html
exx
push hl
exx
call UART.RS232_INIT
xor a
call UART.RS232_CFGDTR
call RS232_DISCARD
ld hl, AT_SET_57600
call RS232_PUTS
ld hl, AT_SET_57600
call PUTS
call RS232_DISCARD
exx
pop hl
exx
ret
RS232_DISCARD:
ld b, 0
; flush everything until ESP-12 "has nothing to say", but no more than 256 chars
RS232_DISCARD_B:
.flush: call UART.RS232_RD_BT
ret nc
djnz .flush
ret
RS232_PUTS:
ld a, (hl)
or a
ret z
call UART.RS232_WR_BT
inc hl
jr RS232_PUTS
PUTS:
ld a, (hl)
or a
ret z
rst 0x10
inc hl
jr PUTS
AT_SET_57600:
defb 'AT+UART_CUR=57600,8,1,0,2', 13, 10, 0
INCLUDE "drivers/uart-ay-128k.asm"
DISPLAY "Code: ",/A,$-_start
DEFINE TAPE "esp576.tap"
EMPTYTAP TAPE
SAVETAP TAPE,BASIC,"ESP276",BASIC.START,BASIC.END-BASIC.START,10
SAVETAP TAPE,CODE, "ESP576.C",_start,$-_start
; EOF vim: et:ai:ts=4:sw=4: