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
PSTR EQU 09h ; print string
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
ORST EQU 04h ; reset command (H)
@@ -30,16 +38,49 @@ OCOLL EQU 80h ; column count: 128 columns
; MAIN
CALL OINIT ; init OLED
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
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:
LD D,OCOLL ; number of columns
@@ -49,7 +90,22 @@ READLINE1:
CALL ODATA ; write to OLED
POP DE
DEC D ; count donw columns
JP NZ,READLINE1 ; next column
JP NZ,READLINE1 ; next column
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:
@@ -169,15 +225,22 @@ READHEX:
OR B ; OR B to A
RET
PROMPT:
; DE - address to $ terminated string
PRINT:
LD C,PSTR ; load function number
LD DE,PROMPTMSG ; load string addr
CALL BDOS ; call CP/M
RET
PROMPTMSG:
MSGPROMPT:
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
; 081h,080h - set contrast (080h full)
; 020h,000h - set horizontal window wrapping