Remove old project
This commit is contained in:
		
							
								
								
									
										25
									
								
								loader.asm
									
									
									
									
									
								
							
							
						
						
									
										25
									
								
								loader.asm
									
									
									
									
									
								
							@@ -1,25 +0,0 @@
 | 
			
		||||
    MODULE basic_loader
 | 
			
		||||
    ORG #5c00
 | 
			
		||||
basic_start:
 | 
			
		||||
    db 0, 0     ; line number
 | 
			
		||||
    dw line_length
 | 
			
		||||
line_start:
 | 
			
		||||
    db #fd, '0', #0e, 0, 0  ; CLEAR
 | 
			
		||||
    dw code_start_addr - 1
 | 
			
		||||
    db 0, ':'
 | 
			
		||||
    db #ef, '"'             ; LOAD "
 | 
			
		||||
    db "code"
 | 
			
		||||
    db '"', #af, ':'        ; name"CODE
 | 
			
		||||
    db #f5, #c0             ; PRINT USR
 | 
			
		||||
    db '0', #0e, 0, 0
 | 
			
		||||
    dw code_run_addr
 | 
			
		||||
    db 0, #0d
 | 
			
		||||
 | 
			
		||||
line_length EQU $ - line_start
 | 
			
		||||
basic_length EQU $ - basic_start
 | 
			
		||||
 | 
			
		||||
    EMPTYTAP "myprog.tap"
 | 
			
		||||
    SAVETAP "myprog.tap", BASIC, "myprog", basic_start, basic_length, 0
 | 
			
		||||
    SAVETAP "myprog.tap", CODE, "code", code_start_addr, code_length
 | 
			
		||||
 | 
			
		||||
    ENDMODULE
 | 
			
		||||
							
								
								
									
										22
									
								
								main.asm
									
									
									
									
									
								
							
							
						
						
									
										22
									
								
								main.asm
									
									
									
									
									
								
							@@ -1,22 +0,0 @@
 | 
			
		||||
code_start_addr EQU #8000
 | 
			
		||||
    ORG code_start_addr
 | 
			
		||||
 | 
			
		||||
    MODULE main
 | 
			
		||||
@code_run_addr:
 | 
			
		||||
    ld a, 57
 | 
			
		||||
    ld bc, 64
 | 
			
		||||
    ld hl, 0
 | 
			
		||||
    call print_string
 | 
			
		||||
    db "Hello, world!", 0
 | 
			
		||||
    ret
 | 
			
		||||
 | 
			
		||||
    ENDMODULE
 | 
			
		||||
 | 
			
		||||
    INCLUDE print.asm
 | 
			
		||||
 | 
			
		||||
code_length EQU $ - code_start_addr
 | 
			
		||||
 | 
			
		||||
    DEVICE ZXSPECTRUM48
 | 
			
		||||
    SLDOPT COMMENT WPMEM, LOGPOINT, ASSERTION
 | 
			
		||||
    SAVESNA "myprog.sna", code_run_addr
 | 
			
		||||
    INCLUDE loader.asm
 | 
			
		||||
							
								
								
									
										180
									
								
								print.asm
									
									
									
									
									
								
							
							
						
						
									
										180
									
								
								print.asm
									
									
									
									
									
								
							@@ -1,180 +0,0 @@
 | 
			
		||||
ink_black EQU 0
 | 
			
		||||
ink_blue EQU 1
 | 
			
		||||
ink_red EQU 2
 | 
			
		||||
ink_magenta EQU 3
 | 
			
		||||
ink_green EQU 4
 | 
			
		||||
ink_cyan EQU 5
 | 
			
		||||
ink_yellow EQU 6
 | 
			
		||||
ink_white EQU 7
 | 
			
		||||
black EQU ink_black
 | 
			
		||||
blue EQU ink_blue
 | 
			
		||||
red EQU ink_red
 | 
			
		||||
magenta EQU ink_magenta
 | 
			
		||||
green EQU ink_green
 | 
			
		||||
cyan EQU ink_cyan
 | 
			
		||||
yellow EQU ink_yellow
 | 
			
		||||
white EQU ink_white
 | 
			
		||||
paper_black EQU 0
 | 
			
		||||
paper_blue EQU 8
 | 
			
		||||
paper_red EQU 16
 | 
			
		||||
paper_magenta EQU 24
 | 
			
		||||
paper_green EQU 32
 | 
			
		||||
paper_cyan EQU 40
 | 
			
		||||
paper_yellow EQU 48
 | 
			
		||||
paper_white EQU 56
 | 
			
		||||
bright EQU 64
 | 
			
		||||
flash EQU 128
 | 
			
		||||
attr_list_end EQU flash | bright | ink_black | paper_black
 | 
			
		||||
 | 
			
		||||
    MODULE print
 | 
			
		||||
bm_start EQU #4000
 | 
			
		||||
attr_area EQU #5800
 | 
			
		||||
bm_len EQU 6144
 | 
			
		||||
attr_len EQU 768
 | 
			
		||||
CHARS EQU #5c36
 | 
			
		||||
char_posn:
 | 
			
		||||
    dw #4000
 | 
			
		||||
 | 
			
		||||
        MODULE print_string
 | 
			
		||||
; Set HL to be row and column and follow the call with a null-terminated string
 | 
			
		||||
; All registers preserved
 | 
			
		||||
; char_posn will have been moved to after string, but HL will still have coordinates of string start
 | 
			
		||||
@print_string:
 | 
			
		||||
    call set_char_posn
 | 
			
		||||
    ex (sp), hl
 | 
			
		||||
    push af
 | 
			
		||||
loop:
 | 
			
		||||
    ld a, (hl)
 | 
			
		||||
    inc hl
 | 
			
		||||
    or a
 | 
			
		||||
    jr z, exit
 | 
			
		||||
    call print_char
 | 
			
		||||
    jr loop
 | 
			
		||||
exit:
 | 
			
		||||
    pop af
 | 
			
		||||
    ex (sp), hl
 | 
			
		||||
    ret
 | 
			
		||||
        ENDMODULE
 | 
			
		||||
 | 
			
		||||
        MODULE print_char
 | 
			
		||||
; Prints the single character from the A register
 | 
			
		||||
; All registers preserved
 | 
			
		||||
; char_posn will point to next square
 | 
			
		||||
@print_char:
 | 
			
		||||
    push hl
 | 
			
		||||
    push de
 | 
			
		||||
    push af
 | 
			
		||||
    ld h, 0
 | 
			
		||||
    ld l, a
 | 
			
		||||
    add hl, hl
 | 
			
		||||
    add hl, hl
 | 
			
		||||
    add hl, hl
 | 
			
		||||
    ld d, h
 | 
			
		||||
    ld e, l
 | 
			
		||||
    ld hl, (print.CHARS)
 | 
			
		||||
    add hl, de
 | 
			
		||||
    ld d, h
 | 
			
		||||
    ld e, l
 | 
			
		||||
    ld hl, (print.char_posn)
 | 
			
		||||
    push bc
 | 
			
		||||
    ld b, 8
 | 
			
		||||
loop:
 | 
			
		||||
    ld a, (de)
 | 
			
		||||
    ld (hl), a
 | 
			
		||||
    inc h
 | 
			
		||||
    inc de
 | 
			
		||||
    djnz loop
 | 
			
		||||
    ld hl, (print.char_posn)
 | 
			
		||||
    inc l
 | 
			
		||||
    jr nz, update_char_posn
 | 
			
		||||
    ld a, #50
 | 
			
		||||
    cp h
 | 
			
		||||
    jr nz, next_third
 | 
			
		||||
    ld hl, print.bm_start
 | 
			
		||||
    jr update_char_posn
 | 
			
		||||
next_third:
 | 
			
		||||
    ld a, 8
 | 
			
		||||
    add a, h
 | 
			
		||||
    ld h, a
 | 
			
		||||
update_char_posn:
 | 
			
		||||
    ld (print.char_posn), hl
 | 
			
		||||
    pop bc
 | 
			
		||||
    pop af
 | 
			
		||||
    pop de
 | 
			
		||||
    pop hl
 | 
			
		||||
    ret
 | 
			
		||||
        ENDMODULE
 | 
			
		||||
 | 
			
		||||
        MODULE set_char_posn
 | 
			
		||||
; Pass row and column, in that order, in HL
 | 
			
		||||
@set_char_posn:
 | 
			
		||||
    push hl
 | 
			
		||||
    push af
 | 
			
		||||
    ld a, h
 | 
			
		||||
    ; check for top third
 | 
			
		||||
    ld h, %01000000
 | 
			
		||||
    sub 8
 | 
			
		||||
    jr c, set_column
 | 
			
		||||
    ; check for middle third
 | 
			
		||||
    ld h, %01001000
 | 
			
		||||
    sub 8
 | 
			
		||||
    jr c, set_column
 | 
			
		||||
    ; must be bottom third
 | 
			
		||||
    ld h, %01010000
 | 
			
		||||
    sub 8
 | 
			
		||||
set_column:
 | 
			
		||||
    ; restore the row offset of the third and shift it into upper 3 bits of L
 | 
			
		||||
    add a, 8
 | 
			
		||||
    sla a
 | 
			
		||||
    sla a
 | 
			
		||||
    sla a
 | 
			
		||||
    sla a
 | 
			
		||||
    sla a
 | 
			
		||||
    or l
 | 
			
		||||
    ld l, a
 | 
			
		||||
    ld (print.char_posn), hl
 | 
			
		||||
    pop af
 | 
			
		||||
    pop hl
 | 
			
		||||
    ret
 | 
			
		||||
        ENDMODULE
 | 
			
		||||
 | 
			
		||||
        MODULE set_attributes
 | 
			
		||||
; Row and column in HL
 | 
			
		||||
; db list of attributes follows call
 | 
			
		||||
; terminate with attr_list_end byte (bright flashing black on black)
 | 
			
		||||
@set_attributes:
 | 
			
		||||
        ex de, hl
 | 
			
		||||
        ex (sp), hl
 | 
			
		||||
        push de
 | 
			
		||||
        push hl
 | 
			
		||||
        ld h, 0
 | 
			
		||||
        ld l, d
 | 
			
		||||
        ld d, h
 | 
			
		||||
        add hl, hl
 | 
			
		||||
        add hl, hl
 | 
			
		||||
        add hl, hl
 | 
			
		||||
        add hl, hl
 | 
			
		||||
        add hl, hl
 | 
			
		||||
        add hl, de
 | 
			
		||||
        ld de, print.attr_area
 | 
			
		||||
        add hl, de
 | 
			
		||||
        pop de
 | 
			
		||||
        ex de, hl
 | 
			
		||||
        push af
 | 
			
		||||
loop:
 | 
			
		||||
        ld a, (hl)
 | 
			
		||||
        inc hl
 | 
			
		||||
        cp attr_list_end
 | 
			
		||||
        jr z, exit
 | 
			
		||||
        ld (de), a
 | 
			
		||||
        inc de
 | 
			
		||||
        jr loop
 | 
			
		||||
exit:
 | 
			
		||||
        pop af
 | 
			
		||||
        pop de
 | 
			
		||||
        ex (sp), hl
 | 
			
		||||
        ex de, hl
 | 
			
		||||
        ret
 | 
			
		||||
        ENDMODULE
 | 
			
		||||
 | 
			
		||||
    ENDMODULE
 | 
			
		||||
		Reference in New Issue
	
	Block a user