reading images form file

This commit is contained in:
2025-10-27 13:50:34 +00:00
parent c73127a634
commit 7900a4474e

View File

@@ -7,6 +7,14 @@ LF EQU 0Ah ; new line
BDOS EQU 0005h ; BDOS entry point BDOS EQU 0005h ; BDOS entry point
PSTR EQU 09h ; print string PSTR EQU 09h ; print string
CRED EQU 01h ; read console CRED EQU 01h ; read console
FOPE EQU 0Fh ; file open
FRED EQU 14h ; file read next record
FCB EQU 5Ch ; File Control Block
FCBFNAME EQU FCB+01h ; FCB File Name
FCBEX EQU FCB+0Ch ; FCB Excent Number
FCBRC EQU FCB+0Fh ; FCB Record Count
FCBCR EQU FCB+20h ; FCB Current Record
OLED EQU 50h ; base addr of OLED card OLED EQU 50h ; base addr of OLED card
ORST EQU 04h ; reset command (H) ORST EQU 04h ; reset command (H)
@@ -30,16 +38,49 @@ OCOLL EQU 80h ; column count: 128 columns
; MAIN ; MAIN
CALL OINIT ; init OLED CALL OINIT ; init OLED
CALL OCLS ; clear screen CALL OCLS ; clear screen
CALL PROMPT ; print prompt
CALL OCSTART ; go to start CALL OCSTART ; go to start
CALL READLINE ; read row A
CALL READLINE ; read row B
CALL READLINE ; read row C
CALL READLINE ; read row D
LD A,(FCBFNAME) ; load first char of file name
CP ' ' ; check file name provided
JP NZ,MAIN1
CALL PROMPTREAD ; read from prompt
RET ; exit to CP/M
MAIN1:
CALL FILEREAD ; read from file
RET ; exit to CP/M RET ; exit to CP/M
PROMPTREAD:
LD DE,MSGPROMPT
CALL PRINT ; print prompt
CALL READLINE ; read row A
CALL READLINE ; read row B
CALL READLINE ; read row C
CALL READLINE ; read row D
RET
FILEREAD:
LD DE,MSGFILEREAD
CALL PRINT ; print reading from file
XOR A
LD (FCBEX),A ; select 0'th extent
LD (FCBRC),A ; clear
LD C,FOPE ; open file
LD DE,FCB ; use default FCB
CALL BDOS
CP 0FFh ; is error
JP Z,FILEREAD1
XOR A
LD (FCBCR),A ; start from beggining
CALL READRECORD ; read 128 byte record
RET
FILEREAD1:
LD DE,MSGOPENERR
CALL PRINT
LD A,0FFh
RET
READLINE: READLINE:
LD D,OCOLL ; number of columns LD D,OCOLL ; number of columns
@@ -52,6 +93,21 @@ READLINE1:
JP NZ,READLINE1 ; next column JP NZ,READLINE1 ; next column
RET RET
; reads block using default FCB
; A=0 - OK
; A=FFh - error
READRECORD:
LD C,FRED ; read file
LD DE,FCB ; use default FCB
CALL BDOS
JP NZ,READRECORD1
RET
READRECORD1:
LD DE,MSGREADERR
CALL PRINT
LD A,0FFh ; error
RET
OINIT: OINIT:
CALL ORESET ; reset OLED CALL ORESET ; reset OLED
LD HL,OINITSEQ ; commands to send LD HL,OINITSEQ ; commands to send
@@ -169,15 +225,22 @@ READHEX:
OR B ; OR B to A OR B ; OR B to A
RET RET
PROMPT: ; DE - address to $ terminated string
PRINT:
LD C,PSTR ; load function number LD C,PSTR ; load function number
LD DE,PROMPTMSG ; load string addr
CALL BDOS ; call CP/M CALL BDOS ; call CP/M
RET RET
PROMPTMSG: MSGPROMPT:
DB 'OLED:>', CR, LF,'$' ; string terminated with $ DB 'OLED:>', CR, LF,'$' ; string terminated with $
MSGFILEREAD:
DB 'Reading from file', CR, LF, '$'
MSGOPENERR:
DB 'Error opening file', CR, LF, '$'
MSGREADERR:
DB 'Error reading file', CR, LF, '$'
; Initialization sequence ; Initialization sequence
; 081h,080h - set contrast (080h full) ; 081h,080h - set contrast (080h full)
; 020h,000h - set horizontal window wrapping ; 020h,000h - set horizontal window wrapping