OPT ?+ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 1 ;------------------------------ ; .LI OFF ; ZERO PAGE System Adressen ; LINZBS = $00 BOOT = $09 DOSVEC = $0A DOSINI = $0C APPMHI = $0E BRKKEY = $11 RTCLOK = $12 ICAX1Z = $2A ICAX2Z = $2B ROWCRS = $54 COLCRS = $55 DINDEX = $57 SAVMSC = $58 RAMTOP = $6A ;------------------------------ ; PAGE 2 ADRESSEN ; VDSLST = $0200 VIMIRQ = $0216 VVBLKI = $0222 COLDST = $0244 PADDL0 = $0270 COLOR0 = $02C4 COLOR1 = $02C5 COLOR2 = $02C6 RUNAD = $02E0 INITAD = $02E2 MEMTOP = $02E5 MEMLO = $02E7 CRSINH = $02F0 CHBAS = $02F4 ATACHR = $02FB CH = $02FC FILDAT = $02FD DSPFLG = $02FE ;------------------------------ ; IOCB 0 ; ICCOM = $0342 ICSTA = $0343 ICBAL = $0344 ICBAH = $0345 ICPTL = $0346 ICPTH = $0347 ICBLL = $0348 ICBLH = $0349 ICAX1 = $034A ICAX2 = $034B ICSPR = $034C ;------------------------------ BASICF = $03F8 ;------------------------------ CONSOL = $D01F ;------------------------------ RANDOM = $D20A AUDF1 = $D200 AUDC1 = $D201 AUDCTL = $D208 SKCTL = $D20F ;------------------------------ PORTB = $D301 ;------------------------------ NMIEN = $D40E NMIST = $D40F ;------------------------------ EDITRV = $E400 KEYBDV = $E420 CIOV = $E456 COLDSV = $E477 ;Ende der System adressen ;------------------------------ ;ZERO-PAGE BASIC Adressen ; BAS_LOMEM=$80 VNTP =$82 ;VAR.NAMETAB. VNTD =$84 ;VAR.N.TAB.ENDE VVTP =$86 ;VAR.WERTETAB. STMTAB =$88 ;START BASIC PR. STMCUR =$8A ;CURRENT_STATEMENT. STARP =$8C ;VARFELDER RUNSTK =$8E ;BASIC-STACK BASMEMTOP=$90 MEOLFLG =$92 ZP093 =$93 ZP094 =$94 ZP095 =$95 ZP096 =$96 ZP097 =$97 ZP098 =$98 ZP099 =$99 ZP09A =$9A ZP09B =$9B ZP09C =$9C ZP09D =$9D ZP09E =$9E LLNGTH =$9F ZP0A0 =$A0 ZP0A1 =$A1 ZP0A2 =$A2 ZP0A3 =$A3 ZP0A4 =$A4 ZP0A5 =$A5 ZP0A6 =$A6 STATE_LEN=$A7 STATE_NDX=$A8 OPSTKX =$A9 ARSLVL =$AA EXSVOP =$AB TVSCIX =$AC EXSVPR =$AD ZP0AE =$AE ZP0AF =$AF ZP0B0 =$B0 ZP0B1 =$B1 ZP0B2 =$B2 ZP0B3 =$B3 ZP0B4 =$B4 ZP0B5 =$B5 DATA_PTR =$B6 DATAZ_PTR=$B7 ZP0B9 =$B9 STOPLN =$BA TRAPLN =$BC ZP0BE =$BE ZP0BF =$BF CIO_CMD =$C0 CIO_KANAL=$C1 ZP0C2 =$C2 ERRSAV =$C3 ZP0C4 =$C4 ZP0C5 =$C5 ZP0C6 =$C6 ZP0C7 =$C7 BAS_COLOR=$C8 PRINT_TAB=$C9 PROG_CLR =$CA ZP0CB =$CB ZP0CC =$CC ZP0CD =$CD ZP0CE =$CE ZP0CF =$CF ZP0D0 =$D0 ZP0D1 =$D1 ZP0D2 =$D2 ZP0D3 =$D3 FR0 =$D4 ZP0DA =$DA ZP0DB =$DB ZP0DC =$DC ZP0DD =$DD ZP0DE =$DE ZP0DF =$DF FR1 =$E0 ZP0E6 =$E6 ZP0E7 =$E7 ZP0E8 =$E8 ZP0E9 =$E9 ZP0EA =$EA ZP0EB =$EB ZP0EC =$EC ZP0ED =$ED ZP0EE =$EE ZP0EF =$EF ZP0F0 =$F0 ZP0F1 =$F1 CIX =$F2 INBUFF =$F3 ZP0F5 =$F5 ZP0F6 =$F6 ZP0F7 =$F7 ZP0F8 =$F8 ZP0F9 =$F9 ZP0FA =$FA RADFLG =$FB ZP0FC =$FC ZP0FD =$FD ZP0FE =$FE ZP0FF =$FF ; ;Ende der zero-page adressen ;------------------------------ ; diverse adressen und tab. ; ; The TurboBasic XL low ram address - adjust to load in bigger DOS TBXL_LOW_ADDRESS = $2080 ; The loader for RAM under ROM parts and initialization address TBXL_LOADER = TBXL_LOW_ADDRESS+$80 XTAB3 = TBXL_LOADER COMMANDS_TAB = TBXL_LOW_ADDRESS+$180 DEVICE_NAMES = TBXL_LOW_ADDRESS+$280 OS_RAM_ON = TBXL_LOW_ADDRESS+$2A4 FUNCTION_TAB = TBXL_LOW_ADDRESS+$2BA TOP_LOADER = $6000 OS_RAM_C0 = $C000 OS_RAM_D8 = $D800 OS_RAM_E4 = $E400 ;------------------------------ ROM_ZSATZ =$E000 ; The character map of the loader - used to avoid screen flicker while loading RAM_CHMAP =$5C00 STACK =$0105 ;STACK ; XTAB1 =TBXL_LOW_ADDRESS+$A0 XTAB1_20 =XTAB1+$20 XTAB1_21 =XTAB1+$21 XTAB1_40 =XTAB1+$40 XTAB1_41 =XTAB1+$41 XTAB1_60 =XTAB1+$60 XTAB1_61 =XTAB1+$61 XTAB1_80 =XTAB1+$80 XTAB1_81 =XTAB1+$81 XTAB1_A0 =XTAB1+$A0 XTAB1_A1 =XTAB1+$A1 XTAB1_C0 =XTAB1+$C0 XTAB1_C1 =XTAB1+$C1 ; XTAB2 =COMMANDS_TAB+$CA XTAB2_1 =XTAB2+$1 ;TAB. NACH XTAB2_3 =XTAB2+$3 ;COMMANDSL. XTAB2_4 =XTAB2+$4 XTAB2_6 =XTAB2+$6 XTAB2_7 =XTAB2+$7 XTAB2_8 =XTAB2+$8 XTAB2_9 =XTAB2+$9 XTAB2_B =XTAB2+$B XTAB2_C =XTAB2+$C XTAB2_E =XTAB2+$E XTAB2_F =XTAB2+$F XTAB2_10 =XTAB2+$10 XTAB2_11 =XTAB2+$11 XTAB2_13 =XTAB2+$13 XTAB2_14 =XTAB2+$14 XTAB2_16 =XTAB2+$16 XTAB2_17 =XTAB2+$17 XTAB2_18 =XTAB2+$18 XTAB2_19 =XTAB2+$19 XTAB2_1B =XTAB2+$1B XTAB2_1C =XTAB2+$1C XTAB2_1E =XTAB2+$1E XTAB2_1F =XTAB2+$1F XTAB2_20 =XTAB2+$20 XTAB2_21 =XTAB2+$21 XTAB2_23 =XTAB2+$23 XTAB2_24 =XTAB2+$24 XTAB2_26 =XTAB2+$26 XTAB2_27 =XTAB2+$27 XTAB2_28 =XTAB2+$28 XTAB2_29 =XTAB2+$29 XTAB2_2B =XTAB2+$2B XTAB2_2C =XTAB2+$2C XTAB2_2E =XTAB2+$2E XTAB2_2F =XTAB2+$2F ; ADR_480 =$480 ADR_481 =$481 ADR_482 =$482 ADR_483 =$483 ; ADR_500 =$500 ADR_501 =$501 ADR_57F =$57F ADR_580 =$580 ADR_581 =$581 ADR_58C =$58C ADR_58D =$58D ADR_5C0 =$5C0 ADR_5C8 =$5C8 ADR_5E0 =$5E0 ADR_5E1 =$5E1 ADR_5E2 =$5E2 ADR_5E3 =$5E3 ADR_5E4 =$5E4 ADR_5E5 =$5E5 ADR_5E6 =$5E6 ADR_5E7 =$5E7 ADR_5E8 =$5E8 ADR_5E9 =$5E9 ADR_5EA =$5EA ADR_5EB =$5EB ADR_5EC =$5EC ADR_5ED =$5ED ADR_5EE =$5EE ADR_5EF =$5EF ADR_5F0 =$5F0 ADR_5F1 =$5F1 ; ; L0758 +L0776 ; NACH RESET ; NMI_VEC =$FFFA IRQ_VEC =$FFFE ;------------------------------ ORG TBXL_LOADER ; LDX #$00 VORLAD1 LDA ROM_ZSATZ,X STA RAM_CHMAP ,X LDA ROM_ZSATZ+$100,X STA RAM_CHMAP +$100,X LDA ROM_ZSATZ+$200,X STA RAM_CHMAP +$200,X LDA ROM_ZSATZ+$300,X STA RAM_CHMAP +$300,X INX BNE VORLAD1 LDA #$20 STA COLOR2 LDA #$5C STA COLOR1 STA CRSINH LDA #>RAM_CHMAP STA CHBAS LDA #INFOTEXT_A STA ICBAH LDA #<[INFOTEXT_E-INFOTEXT_A] STA ICBLL STX ICBLH LDA #$0B STA ICCOM JSR CIOV STX CRSINH RTS ;------------------------------ INFOTEXT_A .BY $7D,$9B,$9B,$7F,$20,$20,$20 .BYTE 'TURBO-BASIC XL 2.0' .BY $9B,$9B,$7F,$20,$20,$20 .BYTE 'Update von (12/90)' .BY $9B INFOTEXT_E ;------------------------------ ; INITPROGRAMM STARTEN ; ORG INITAD ; .WORD TBXL_LOADER ;------------------------------ ; ROUTINE NACH RESET ; ORG TBXL_LOW_ADDRESS ; RESET_VEC LDA #RESET_VEC STA DOSINI STY DOSINI+1 LDA #$FF STA PORTB DOS_ADR_SAV JSR $FFFF ;DUMMY LDA #$FE STA PORTB LDA BAS_LOMEM LDY BAS_LOMEM+1 STA MEMLO STY MEMLO+1 JMP L0031 L0758 ; L0776 =L0758+1 ;------------------------------ ; JUMP TABLE. FOR COMMANDS LIST ; ORG COMMANDS_TAB; .WORD REM_CMD .WORD DATA_CMD .WORD INPUT_CMD .WORD COLOR_CMD .WORD LIST_CMD .WORD ENTER_CMD .WORD LET_CMD .WORD IF_CMD .WORD FOR_CMD .WORD NEXT_CMD .WORD GOTO_CMD .WORD GOTO_CMD .WORD GOSUB_CMD .WORD TRAP_CMD .WORD BYE_CMD .WORD CONT_CMD .WORD COM_CMD .WORD CLOSE_CMD .WORD CLR_CMD .WORD DEG_CMD .WORD DIM_CMD .WORD END_CMD .WORD NEW_CMD .WORD OPEN_CMD .WORD LOAD_CMD .WORD SAVE_CMD .WORD STATUS_CMD .WORD NOTE_CMD .WORD POINT_CMD .WORD XIO_CMD .WORD ON_CMD .WORD POKE_CMD .WORD PRINT_CMD .WORD RAD_CMD .WORD READ_CMD .WORD RESTORE_CMD .WORD RETURN_CMD .WORD RUN_CMD .WORD STOP_CMD .WORD POP_CMD .WORD PRINT_CMD .WORD GET_CMD .WORD PUT_CMD .WORD GRAPHICS_CMD .WORD PLOT_CMD .WORD POSITION_CMD .WORD DOS_CMD .WORD DRAWTO_CMD .WORD SETCOLOR_CMD .WORD LOCATE_CMD .WORD SOUND_CMD .WORD LPRINT_CMD .WORD CSAVE_CMD .WORD CLOAD_CMD .WORD LET_CMD .WORD ERROR_LINE .WORD DPOKE_CMD .WORD MOVE_CMD .WORD MOVE_NEG_CMD .WORD FOR_CTRL_CMD .WORD REPEAT_CMD .WORD UNTIL_CMD .WORD WHILE_CMD .WORD WEND_CMD .WORD ELSE_CMD .WORD ENDIF_CMD .WORD BPUT_CMD .WORD BGET_CMD .WORD FILLTO_CMD .WORD DO_CMD .WORD LOOP_CMD .WORD EXIT_CMD .WORD DIR_CMD .WORD LOCK_CMD .WORD UNLOCK_CMD .WORD RENAME_CMD .WORD DELETE_CMD .WORD PAUSE_CMD .WORD TIMES_CMD .WORD PROC_CMD .WORD EXEC_CMD .WORD ENDPROC_CMD .WORD FCOLOR_CMD .WORD LIST_CTRL_CMD .WORD MINUS_LINE .WORD RENUM_CMD .WORD DEL_CMD .WORD DUMP_CMD .WORD TRACE_CMD .WORD TEXT_CMD .WORD BLOAD_CMD .WORD BRUN_CMD .WORD GO_NR_CMD .WORD GO_MARKE .WORD BRK_CTRL_CMD .WORD PAINT_CMD .WORD CLS_CMD .WORD DSOUND_CMD .WORD CIRCLE_CMD .WORD PUTFL_CMD .WORD GETFL_CMD ; ;------------------------------ ORG DEVICE_NAMES ; DISKWILD_NAME .BYTE 'D:*.*',$9B SCREEN_NAME .BYTE 'S:',$9B CASSETTE_NAME .BYTE 'C:',$9B PRINTER_NAME .BYTE 'P:',$9B OBJ_RUN_FLAG ;------------------------------ ; RAM UNTERM O.S EINSCHALTEN ; ORG OS_RAM_ON ; LDA PORTB AND #$FC ORA #$02 STA PORTB RTS ;------------------------------ ; JUMP TABLE. FOR FUNCTIONS LIST ; ORG FUNCTION_TAB ; .WORD KL_GL_FUN .WORD KL_GR_FUN .WORD GR_GL_FUN .WORD KLEIN_FUN .WORD GR_FUN .WORD GL_FUN .WORD POWER_FUN .WORD MULTIPL_FUN .WORD ADDIT_FUN .WORD SUBTR_FUN .WORD DIVIS_FUN .WORD NOT_FUN .WORD OR_FUN .WORD AND_FUN .WORD Y0008 .WORD Y0126 .WORD X_FPASIGN .WORD Y0128 .WORD KL_GL_FUN .WORD KL_GR_FUN .WORD GR_GL_FUN .WORD KLEIN_FUN .WORD GR_FUN .WORD GL_FUN .WORD Y0008 .WORD Y0129 .WORD Y0130 .WORD Y0131 .WORD Y0132 .WORD Y0126 .WORD Y0132 .WORD Y0133 .WORD STR_FUN .WORD CHR_FUN .WORD USR_FUN .WORD ASC_FUN .WORD VAL_FUN .WORD LEN_FUN .WORD ADR_FUN .WORD ATN_FUN .WORD COS_FUN .WORD PEEK_FUN .WORD SIN_FUN .WORD RND_KL_FUN .WORD FRE_FUN .WORD EXP_FUN .WORD LOG_FUN .WORD CLOG_FUN .WORD SQR_FUN .WORD SGN_FUN .WORD ABS_FUN .WORD INT_FUN .WORD PADDLE_FUN .WORD STICK_FUN .WORD PTRIG_FUN .WORD STRIG_FUN .WORD DPEEK_FUN .WORD AND_BIN_FUN .WORD OR_BIN_FUN .WORD INSTR_FUN .WORD INKEY_FUN .WORD EXOR_BIN_FUN .WORD HEX_FUN .WORD DEC_FUN .WORD DIV_FUN .WORD FRAC_FUN .WORD TIMES_FUN .WORD TIME_FUN .WORD MOD_FUN .WORD ON_EXEC_FUN .WORD RND_FUN .WORD RAND_FUN .WORD TRUNC_FUN L0441 .WORD NULL_FUN .WORD EINS_FUN .WORD ZWEI_FUN .WORD DREI_FUN .WORD ON_GO_FUN .WORD UINSTR_FUN .WORD ERR_FUN .WORD ERL_FUN ; AB HIER $23DC .BY $00,$00,$00,$00 .BY $00,$00,$00,$00,$00,$00,$00,$00 .BY $00,$20,$20,$20,$20,$20,$20,$2C .BY $28,$22,$22,$28,$1E,$1A,$1C,$32 .BY $04,$32,$32,$30,$30,$30,$30,$30 .BY $30,$2E,$2E,$32,$32,$32,$32,$32 .BY $04,$32,$32,$32,$32,$32,$32,$32 .BY $32,$32,$32,$32,$32,$32,$32,$32 .BY $32,$32,$32,$32,$32,$32,$32,$32 .BY $32,$32,$2A,$2A,$32,$32,$2A,$32 .BY $32,$26 L0931 .BY $32,$32,$32,$24,$00,$32 .BY $32,$32,$32,$32,$32,$32,$00,$32 .BY $32,$32,$00,$00,$00,$00,$00,$00 .BY $00,$00,$00,$00,$00,$00,$00,$20 .BY $20,$20,$20,$20,$20,$2C,$28,$22 .BY $22,$28,$1D,$1A,$1C,$02,$30,$01 .BY $01,$30,$30,$30,$30,$30,$30,$2D .BY $2D,$02,$02,$02,$02,$02,$03,$02 .BY $02,$02,$02,$02,$02,$02,$02,$02 .BY $02,$02,$02,$02,$02,$02,$02,$02 .BY $02,$02,$02,$02,$02,$02,$02,$02 .BY $2A,$2A,$02,$32,$2A,$02,$02,$28 .BY $02,$32,$32,$28,$00,$32,$02,$02 .BY $32,$32,$32,$32,$00,$02,$32,$32 ; ;------------------------------ ; O.S ON AND CALL CIO ; CIO_JUMP INC PORTB JSR CIOV DEC PORTB CPY #$00 REM_CMD DATA_CMD MINUS_LINE GO_MARKE ON_EXEC_FUN ON_GO_FUN Y0008 RTS ;------------------------------ ; NMI +IRQ ABSCHLUSS ; NMI_END PLA TAX IRQ_END DEC PORTB PLA RTI ;------------------------------ ; NMI CALL ; NMI_CALL BIT NMIST BPL NO_NMI_DLI JMP (VDSLST) ; DLI NO_NMI_DLI PHA TXA PHA LDA #>NMI_END PHA LDA #IRQ_END PHA LDA #[OS_RAM_ON-1] PHA LDA #<[OS_RAM_ON-1] PHA LDA ZP0B0 STA ZP0C6 ?L2 JSR L0115 DEC ZP0C6 BMI ?L3 LDA FR0 PHA LDA FR0+1 PHA JMP ?L2 ?L3 INC PORTB LDA ZP0B0 PHA JMP (FR0) ;------------------------------ ; ENDE PART 1 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 2 ;------------------------------ ; .LI OFF ;------------------------------ ERROR2_1 JMP ERROR2_2 L0468 LDA #$00 L0703 STY ZP0A4 STA ZP0A5 CLC LDA BASMEMTOP ADC ZP0A4 TAY LDA BASMEMTOP+1 ADC ZP0A5 CMP MEMTOP+1 BCC ?L1 BNE ERROR2_1 CPY MEMTOP BCC ?L1 BNE ERROR2_1 ?L1 SEC LDA BASMEMTOP SBC LINZBS,X STA ZP0A2 LDA BASMEMTOP+1 SBC LINZBS+1,X STA ZP0A3 CLC LDA LINZBS,X STA ZP097 STA ZP099 ADC ZP0A4 STA ZP09B LDA LINZBS+1,X STA ZP098 STA ZP09A ADC ZP0A5 STA ZP09C ?L2 LDA LINZBS,X ADC ZP0A4 STA LINZBS,X LDA LINZBS+1,X ADC ZP0A5 STA LINZBS+1,X INX INX CPX #$92 BCC ?L2 STA APPMHI+1 LDA BASMEMTOP STA APPMHI MOVE_D_SUB INC PORTB LDX ZP0A3 CLC TXA ADC ZP09A STA ZP09A CLC TXA ADC ZP09C STA ZP09C INX LDY ZP0A2 BEQ ?L4 ?L1 DEY LDA (ZP099),Y STA (ZP09B),Y TYA BNE ?L1 BEQ ?L4 ?L2 DEC ZP09A DEC ZP09C ?L3 DEY LDA (ZP099),Y STA (ZP09B),Y DEY LDA (ZP099),Y STA (ZP09B),Y DEY LDA (ZP099),Y STA (ZP09B),Y DEY LDA (ZP099),Y STA (ZP09B),Y TYA BNE ?L3 ?L4 DEX BNE ?L2 DEC PORTB RTS L0495 LDA #$00 L0979 STY ZP0A4 STA ZP0A5 SEC LDA BASMEMTOP SBC LINZBS,X STA ZP0A2 LDA BASMEMTOP+1 SBC LINZBS+1,X STA ZP0A3 SEC LDA LINZBS,X STA ZP099 SBC ZP0A4 STA ZP09B LDA LINZBS+1,X STA ZP09A SBC ZP0A5 STA ZP09C ?L1 SEC LDA LINZBS,X SBC ZP0A4 STA LINZBS,X LDA LINZBS+1,X SBC ZP0A5 STA LINZBS+1,X INX INX CPX #$92 BCC ?L1 STA APPMHI+1 LDA BASMEMTOP STA APPMHI MOVE_SUB INC PORTB LDY #$00 LDX ZP0A3 BEQ ?L2 ?L1 LDA (ZP099),Y STA (ZP09B),Y INY LDA (ZP099),Y STA (ZP09B),Y INY LDA (ZP099),Y STA (ZP09B),Y INY LDA (ZP099),Y STA (ZP09B),Y INY BNE ?L1 INC ZP09A INC ZP09C DEX BNE ?L1 ?L2 LDX ZP0A2 BEQ ?L4 ?L3 LDA (ZP099),Y STA (ZP09B),Y INY DEX BNE ?L3 ?L4 DEC PORTB RTS L0150 CLC JMP CLEAR_FR0 L0149 CLC RTS L0152 SEC RTS L0311 JSR FR0_TO_FR1 L0287 LDA FR0 BEQ L0149 LDA FR1 BEQ L0150 EOR FR0 AND #$80 STA ZP0EE LDA FR1 AND #$7F STA FR1 LDA FR0 AND #$7F SEC SBC #$40 SEC ADC FR1 BMI L0152 ORA ZP0EE TAY JSR L0153 STA ZP0DA STA ZP0DB STA ZP0DC STA ZP0DD STA ZP0DE STA ZP0DF STY FR0 LDY #$07 ?L1 LSR FR1+5 BCC ?L2 CLC LDA ZP0DE ADC XTAB2_28,Y STA ZP0DE LDA ZP0DD ADC XTAB2_20,Y STA ZP0DD LDA ZP0DC ADC XTAB2_18,Y STA ZP0DC LDA ZP0DB ADC XTAB2_10,Y STA ZP0DB LDA ZP0DA ADC XTAB2_8,Y STA ZP0DA LDA FR0+5 ADC XTAB2,Y STA FR0+5 DEY BPL ?L1 BMI ?L3 ?L2 BEQ ?L3 DEY BPL ?L1 ?L3 LDY #$07 L0167 LSR FR1+4 BCC ?L5 CLC LDA ZP0DD ADC XTAB2_28,Y STA ZP0DD LDA ZP0DC ADC XTAB2_20,Y STA ZP0DC LDA ZP0DB ADC XTAB2_18,Y STA ZP0DB LDA ZP0DA ADC XTAB2_10,Y STA ZP0DA LDA FR0+5 ADC XTAB2_8,Y STA FR0+5 LDA FR0+4 ADC XTAB2,Y STA FR0+4 DEY BPL L0167 BMI ?L6 ?L5 BEQ ?L6 DEY BPL L0167 ?L6 LDY #$07 ?L7 LSR FR1+3 BCC ?L8 CLC LDA ZP0DC ADC XTAB2_28,Y STA ZP0DC LDA ZP0DB ADC XTAB2_20,Y STA ZP0DB LDA ZP0DA ADC XTAB2_18,Y STA ZP0DA LDA FR0+5 ADC XTAB2_10,Y STA FR0+5 LDA FR0+4 ADC XTAB2_8,Y STA FR0+4 LDA FR0+3 ADC XTAB2,Y STA FR0+3 DEY BPL ?L7 BMI ?L9 ?L8 BEQ ?L9 DEY BPL ?L7 ?L9 LDY #$07 L0177 LSR FR1+2 BCC ?L11 CLC LDA ZP0DB ADC XTAB2_28,Y STA ZP0DB LDA ZP0DA ADC XTAB2_20,Y STA ZP0DA LDA FR0+5 ADC XTAB2_18,Y STA FR0+5 LDA FR0+4 ADC XTAB2_10,Y STA FR0+4 LDA FR0+3 ADC XTAB2_8,Y STA FR0+3 LDA FR0+2 ADC XTAB2,Y STA FR0+2 DEY BPL L0177 BMI ?L12 ?L11 BEQ ?L12 DEY BPL L0177 ?L12 LDY #$07 ?L13 LSR FR1+1 BCC ?L14 CLC LDA ZP0DA ADC XTAB2_28,Y STA ZP0DA LDA FR0+5 ADC XTAB2_20,Y STA FR0+5 LDA FR0+4 ADC XTAB2_18,Y STA FR0+4 LDA FR0+3 ADC XTAB2_10,Y STA FR0+3 LDA FR0+2 ADC XTAB2_8,Y STA FR0+2 LDA FR0+1 ADC XTAB2,Y STA FR0+1 DEY BPL ?L13 BMI ?L15 ?L14 BEQ ?L15 DEY BPL ?L13 ?L15 JMP L0183 L0185 CLC RTS L0184 SEC RTS L0317 LDA FR1 BEQ L0184 LDA FR0 BEQ L0185 EOR FR1 AND #$80 STA ZP0EE LDA FR1 AND #$7F STA FR1 LDA FR0 AND #$7F SEC SBC FR1 CLC ADC #$40 BMI L0184 ORA ZP0EE TAY JSR L0153 STA ZP0E6 STA ZP0E7 STA ZP0E8 STA ZP0E9 STA ZP0EA STA FR1 STA ZP0DA STY FR0 LDY #$00 ?L1 LDA FR1 CMP XTAB2,Y BNE ?L2 LDA FR1+1 CMP XTAB2_8,Y BNE ?L2 LDA FR1+2 CMP XTAB2_10,Y BNE ?L2 LDA FR1+3 CMP XTAB2_18,Y BNE ?L2 LDA FR1+4 CMP XTAB2_20,Y BNE ?L2 LDA FR1+5 CMP XTAB2_28,Y BNE ?L2 LDX #$00 JMP L0192 ?L2 BCC ?L3 LDA FR1+5 SBC XTAB2_28,Y STA FR1+5 LDA FR1+4 SBC XTAB2_20,Y STA FR1+4 LDA FR1+3 SBC XTAB2_18,Y STA FR1+3 LDA FR1+2 SBC XTAB2_10,Y STA FR1+2 LDA FR1+1 SBC XTAB2_8,Y STA FR1+1 LDA FR1 SBC XTAB2,Y STA FR1 ?L3 ROL FR0+1 INY CPY #$08 BNE ?L1 LDY #$00 L0197 LDA FR1+1 CMP XTAB2,Y BNE ?L5 LDA FR1+2 CMP XTAB2_8,Y BNE ?L5 LDA FR1+3 CMP XTAB2_10,Y BNE ?L5 LDA FR1+4 CMP XTAB2_18,Y BNE ?L5 LDA FR1+5 CMP XTAB2_20,Y BNE ?L5 LDA ZP0E6 CMP XTAB2_28,Y BNE ?L5 LDX #$01 JMP L0192 ?L5 BCC ?L6 LDA ZP0E6 SBC XTAB2_28,Y STA ZP0E6 LDA FR1+5 SBC XTAB2_20,Y STA FR1+5 LDA FR1+4 SBC XTAB2_18,Y STA FR1+4 LDA FR1+3 SBC XTAB2_10,Y STA FR1+3 LDA FR1+2 SBC XTAB2_8,Y STA FR1+2 LDA FR1+1 SBC XTAB2,Y STA FR1+1 ?L6 ROL FR0+2 INY CPY #$08 BNE L0197 LDY #$00 L0200 LDA FR1+2 CMP XTAB2,Y BNE ?L8 LDA FR1+3 CMP XTAB2_8,Y BNE ?L8 LDA FR1+4 CMP XTAB2_10,Y BNE ?L8 LDA FR1+5 CMP XTAB2_18,Y BNE ?L8 LDA ZP0E6 CMP XTAB2_20,Y BNE ?L8 LDA ZP0E7 CMP XTAB2_28,Y BNE ?L8 LDX #$02 JMP L0192 ?L8 BCC ?L9 LDA ZP0E7 SBC XTAB2_28,Y STA ZP0E7 LDA ZP0E6 SBC XTAB2_20,Y STA ZP0E6 LDA FR1+5 SBC XTAB2_18,Y STA FR1+5 LDA FR1+4 SBC XTAB2_10,Y STA FR1+4 LDA FR1+3 SBC XTAB2_8,Y STA FR1+3 LDA FR1+2 SBC XTAB2,Y STA FR1+2 ?L9 ROL FR0+3 INY CPY #$08 BNE L0200 LDY #$00 L0203 LDA FR1+3 CMP XTAB2,Y BNE ?L11 LDA FR1+4 CMP XTAB2_8,Y BNE ?L11 LDA FR1+5 CMP XTAB2_10,Y BNE ?L11 LDA ZP0E6 CMP XTAB2_18,Y BNE ?L11 LDA ZP0E7 CMP XTAB2_20,Y BNE ?L11 LDA ZP0E8 CMP XTAB2_28,Y BNE ?L11 LDX #$03 JMP L0192 ?L11 BCC ?L12 LDA ZP0E8 SBC XTAB2_28,Y STA ZP0E8 LDA ZP0E7 SBC XTAB2_20,Y STA ZP0E7 LDA ZP0E6 SBC XTAB2_18,Y STA ZP0E6 LDA FR1+5 SBC XTAB2_10,Y STA FR1+5 LDA FR1+4 SBC XTAB2_8,Y STA FR1+4 LDA FR1+3 SBC XTAB2,Y STA FR1+3 ?L12 ROL FR0+4 INY CPY #$08 BNE L0203 LDY #$00 L0206 LDA FR1+4 CMP XTAB2,Y BNE ?L14 LDA FR1+5 CMP XTAB2_8,Y BNE ?L14 LDA ZP0E6 CMP XTAB2_10,Y BNE ?L14 LDA ZP0E7 CMP XTAB2_18,Y BNE ?L14 LDA ZP0E8 CMP XTAB2_20,Y BNE ?L14 LDA ZP0E9 CMP XTAB2_28,Y BNE ?L14 LDX #$04 JMP L0192 ?L14 BCC L0205 LDA ZP0E9 SBC XTAB2_28,Y STA ZP0E9 LDA ZP0E8 SBC XTAB2_20,Y STA ZP0E8 LDA ZP0E7 SBC XTAB2_18,Y STA ZP0E7 LDA ZP0E6 SBC XTAB2_10,Y STA ZP0E6 LDA FR1+5 SBC XTAB2_8,Y STA FR1+5 LDA FR1+4 SBC XTAB2,Y STA FR1+4 L0205 ROL FR0+5 INY CPY #$08 BNE L0206 LDA FR0+1 BNE L0207 LDY #$00 ?L16 LDA FR1+5 CMP XTAB2,Y BNE ?L17 LDA ZP0E6 CMP XTAB2_8,Y BNE ?L17 LDA ZP0E7 CMP XTAB2_10,Y BNE ?L17 LDA ZP0E8 CMP XTAB2_18,Y BNE ?L17 LDA ZP0E9 CMP XTAB2_20,Y BNE ?L17 LDA ZP0EA CMP XTAB2_28,Y BNE ?L17 LDX #$05 JMP L0192 ?L17 BCC ?L18 LDA ZP0EA SBC XTAB2_28,Y STA ZP0EA LDA ZP0E9 SBC XTAB2_20,Y STA ZP0E9 LDA ZP0E8 SBC XTAB2_18,Y STA ZP0E8 LDA ZP0E7 SBC XTAB2_10,Y STA ZP0E7 LDA ZP0E6 SBC XTAB2_8,Y STA ZP0E6 LDA FR1+5 SBC XTAB2,Y STA FR1+5 ?L18 ROL ZP0DA INY CPY #$08 BNE ?L16 L0207 JMP L0183 ;------------------------------ L0192 ROL FR0+1,X INY CPY #$08 BNE L0192 BEQ L0207 L0153 SED CLC LDA FR1+5 STA XTAB2_2F ADC FR1+5 STA XTAB2_2E LDA FR1+4 STA XTAB2_27 ADC FR1+4 STA XTAB2_26 LDA FR1+3 STA XTAB2_1F ADC FR1+3 STA XTAB2_1E LDA FR1+2 STA XTAB2_17 ADC FR1+2 STA XTAB2_16 LDA FR1+1 STA XTAB2_F ADC FR1+1 STA XTAB2_E LDA #$00 STA XTAB2_7 ADC #$00 STA XTAB2_6 LDX #$02 ?L1 LDA XTAB2_2C,X ADC XTAB2_2C,X STA XTAB2_2B,X LDA XTAB2_24,X ADC XTAB2_24,X STA XTAB2_23,X LDA XTAB2_1C,X ADC XTAB2_1C,X STA XTAB2_1B,X LDA XTAB2_14,X ADC XTAB2_14,X STA XTAB2_13,X LDA XTAB2_C,X ADC XTAB2_C,X STA XTAB2_B,X LDA XTAB2_4,X ADC XTAB2_4,X STA XTAB2_3,X DEX BNE ?L1 LDA XTAB2_2E ADC XTAB2_2C STA XTAB2_2B LDA XTAB2_26 ADC XTAB2_24 STA XTAB2_23 LDA XTAB2_1E ADC XTAB2_1C STA XTAB2_1B LDA XTAB2_16 ADC XTAB2_14 STA XTAB2_13 LDA XTAB2_E ADC XTAB2_C STA XTAB2_B LDA XTAB2_6 ADC XTAB2_4 STA XTAB2_3 LDX #$02 ?L2 LDA XTAB2_29,X ADC XTAB2_29,X STA XTAB2_28,X LDA XTAB2_21,X ADC XTAB2_21,X STA XTAB2_20,X LDA XTAB2_19,X ADC XTAB2_19,X STA XTAB2_18,X LDA XTAB2_11,X ADC XTAB2_11,X STA XTAB2_10,X LDA XTAB2_9,X ADC XTAB2_9,X STA XTAB2_8,X LDA XTAB2_1,X ADC XTAB2_1,X STA XTAB2,X DEX BPL ?L2 LDA FR0+1 STA FR1+1 LDA FR0+2 STA FR1+2 LDA FR0+3 STA FR1+3 LDA FR0+4 STA FR1+4 LDA FR0+5 STA FR1+5 ; LDX #5 ;COPY_FR0_FR1_LOOP ; LDA FR0,X ; STA FR1,X ; DEX ; BNE COPY_FR0_FR1_LOOP ;------------------------------ CLEAR_FR0 LDA #$00 STA FR0+0 STA FR0+1 STA FR0+2 STA FR0+3 STA FR0+4 STA FR0+5 RTS ;------------------------------ ; ENDE PART 2 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 3 ;------------------------------ ; .LI OFF SET_INBUFF_580 LDA #>ADR_580 STA INBUFF+1 LDA #XTAB4 JSR L0026 JSR ADR_5E6_FR1 JSR L0287 LSR ZP0F0 BCC L0342 CLC LDA FR0 BEQ L0342 EOR #$80 STA FR0 L0342 RTS ;------------------------------ XTAB4 .BY $BD,$03,$55,$14,$99,$39,$3E,$01 .BY $60,$44,$27,$52,$BE,$46,$81,$75 .BY $43,$55,$3F,$07,$96,$92,$62,$39 .BY $BF,$64,$59,$64,$08,$67 XTAB5 .BY $40 .BY $40,$90,$00,$00,$00,$00 XTAB6 .BY $3F,$01,$74,$53,$29,$25 ;------------------------------ L0829 LDA #$00 STA ZP0F0 STA ZP0F1 LDA FR0 AND #$7F CMP #$40 BMI L0350 LDA FR0 AND #$80 STA ZP0F0 INC ZP0F1 LDA #$7F AND FR0 STA FR0 LDX #$EA ; ROM LDY #$DF ; ADR. INC PORTB JSR L0326 DEC PORTB L0350 JSR FR0_TO_5E6 JSR L0311 BCS ?L5 LDA #$0B LDX #$AE ; ROM LDY #$DF ; ADR. INC PORTB JSR L0026 DEC PORTB BCS ?L5 JSR ADR_5E6_FR1 JSR L0287 BCS ?L5 LDA ZP0F1 BEQ ?L3 LDX #$05 INC PORTB ?L2 LDA $DFF0,X ; ROM ADR. STA FR1,X DEX BPL ?L2 DEC PORTB JSR L0265 LDA ZP0F0 ORA FR0 STA FR0 ?L3 LDA RADFLG BEQ ?L5 LDX #$05 ?L4 LDA XTAB6,X STA FR1,X DEX BPL ?L4 JSR L0317 ?L5 RTS ;------------------------------ L0357 SEC RTS L0358 CLC RTS L0833 LDA #$00 STA ZP0F1 LDA FR0 BMI L0357 BEQ L0358 CMP #$3F BEQ ?L1 CLC ADC #$01 STA ZP0F1 ?L1 LDA #$06 STA ZP0EF LDA #$3F STA FR0 JSR FR0_TO_5E6 JSR FR0_TO_FR1 JSR FR0_EINS INC FR0+1 JSR L0320 JSR ADR_5E6_FR1 JSR L0287 ?L2 LDA FR0 STA ADR_5EC LDA FR0+1 STA ADR_5ED LDA FR0+2 STA ADR_5EE LDA FR0+3 STA ADR_5EF LDA FR0+4 STA ADR_5F0 LDA FR0+5 STA ADR_5F1 JSR FR0_TO_FR1 JSR ADR_5E6_FR0 JSR L0317 JSR ADR_5EC_FR1 JSR L0320 JSR L0368 LDA FR0 BEQ ?L3 JSR ADR_5EC_FR1 JSR L0265 DEC ZP0EF BPL ?L2 BMI ?L4 ?L3 JSR ADR_5EC_FR0 ?L4 LDA ZP0F1 BEQ L0373 LSR CLC ADC FR0 SBC #$1F STA FR0 LSR ZP0F1 BCC L0373 JSR L0314 L0373 CLC RTS L0374 JMP CLEAR_FR0 L0368 LDA FR0 AND #$7F CMP #$0F BCC L0374 JSR FR0_TO_FR1 SED LDX #$00 LDY #$04 CLC ?L8 LDA FR0+5 ADC FR1+5 STA FR0+5 LDA FR0+4 ADC FR1+4 STA FR0+4 LDA FR0+3 ADC FR1+3 STA FR0+3 LDA FR0+2 ADC FR1+2 STA FR0+2 LDA FR0+1 ADC FR1+1 STA FR0+1 TXA ADC #$00 TAX DEY BNE ?L8 CLD TXA BEQ L0325 LDA FR0+4 STA FR0+5 LDA FR0+3 STA FR0+4 LDA FR0+2 STA FR0+3 LDA FR0+1 STA FR0+2 STX FR0+1 L0314 LDA FR0+1 CMP #$10 BCC L0376 INC FR0 L0325 LDA FR0+1 CMP #$10 BCC L0377 LSR ROR FR0+2 ROR FR0+3 ROR FR0+4 ROR FR0+5 LSR ROR FR0+2 ROR FR0+3 ROR FR0+4 ROR FR0+5 LSR ROR FR0+2 ROR FR0+3 ROR FR0+4 ROR FR0+5 LSR ROR FR0+2 ROR FR0+3 ROR FR0+4 ROR FR0+5 STA FR0+1 RTS L0377 DEC FR0 L0376 LDA #$00 ASL FR0+5 ROL FR0+4 ROL FR0+3 ROL FR0+2 ROL FR0+1 ROL ASL FR0+5 ROL FR0+4 ROL FR0+3 ROL FR0+2 ROL FR0+1 ROL ASL FR0+5 ROL FR0+4 ROL FR0+3 ROL FR0+2 ROL FR0+1 ROL ASL FR0+5 ROL FR0+4 ROL FR0+3 ROL FR0+2 ROL FR0+1 ROL RTS L0379 CMP #$FF BCC ?L2 CPY #$50 ?L2 TXA ADC #$00 STA FR0 RTS L0380 TYA AND #$F0 LSR STA FR0 LSR LSR ADC FR0 STA FR0 TYA AND #$0F LDX FR0+2 CPX #$50 ADC FR0 STA FR0 RTS L0431 LDX #$00 LDY FR0+1 LDA FR0 STX FR0+1 SEC SBC #$40 BCC L0379 BEQ L0380 CMP #$02 BEQ L0381 BCS L0382 LDA FR0+2 AND #$F0 LSR STA FR0 LSR LSR ADC FR0 STA FR0 LDA FR0+2 AND #$0F LDX FR0+3 CPX #$50 ADC FR0 STA FR0 L0389 TYA AND #$0F TAX LDA XTAB7_5,X ADC FR0 STA FR0 LDA XTAB7_6,X ADC FR0+1 STA FR0+1 TYA AND #$F0 BEQ L0382 LSR LSR LSR TAX LDA FR0 ADC XTAB7_3,X STA FR0 LDA FR0+1 ADC XTAB7_4,X STA FR0+1 L0382 RTS L0381 CPY #$07 BCS L0382 LDA FR0+3 AND #$F0 LSR STA FR0 LSR LSR ADC FR0 STA FR0 LDA FR0+3 AND #$0F LDX FR0+4 CPX #$50 ADC FR0 STA FR0 LDA XTAB7_1,Y ADC FR0 STA FR0 LDA XTAB7_2,Y ADC FR0+1 STA FR0+1 LDY FR0+2 BNE L0389 RTS ;------------------------------ XTAB7_1 .BY $00,$10,$20,$30,$40,$50,$60 XTAB7_2 .BY $00,$27,$4E,$75,$9C XTAB7_3 .BY $C3 XTAB7_4 .BY $EA,$E8,$03,$D0,$07,$B8,$0B,$A0 .BY $0F,$88,$13,$70,$17,$58,$1B,$40 .BY $1F,$28,$23 XTAB7_5 .BY $00,$64,$C8,$2C,$90,$F4,$58,$BC .BY $20,$84 XTAB7_6 .BY $00,$00,$00,$01,$01,$01,$02,$02 .BY $03,$03 ;------------------------------ ;*** RENUM *** RENUM_ERR JMP ERROR_3 RENUM_CMD JSR LOOP_BEGIN JSR L0399 STA ZP0A2 STY ZP0A3 ORA ZP0A3 BEQ RENUM_ERR TYA ORA ZP09A ORA ZP09C BMI RENUM_ERR LDA ZP099 STA ZP0A0 LDA ZP09A STA ZP0A1 JSR L0402 LDA STMCUR STA FR1+2 LDA STMCUR+1 STA FR1+3 LDA #$80 STA FR0+1 ASL STA FR0 JSR RENUM_19 BMI RENUM_ERR LDA STMTAB+1 STA STMCUR+1 LDA STMTAB RENUM_1 STA STMCUR LDY #$01 LDA (STMCUR),Y BMI RENUM_5 INY LDA (STMCUR),Y STA LLNGTH INY RENUM_2 LDA (STMCUR),Y STA STATE_LEN INY STY STATE_NDX LDA (STMCUR),Y CMP #$0A BEQ ?L3 CMP #$0B BEQ ?L3 CMP #$0C BEQ ?L3 CMP #$0D ?L3 BEQ RENUM_10 CMP #$1E BEQ RENUM_11 CMP #$23 BEQ RENUM_9 CMP #$07 BEQ RENUM_8 CMP #$04 BEQ RENUM_12 CMP #$56 BEQ RENUM_12 RENUM_4 LDY STATE_LEN CPY LLNGTH BCC RENUM_2 CLC LDA STMCUR ADC LLNGTH BCC RENUM_1 INC STMCUR+1 BCS RENUM_1 RENUM_5 LDA FR1+3 STA STMCUR+1 LDA FR1+2 ?L6 STA STMCUR LDY #$01 LDA (STMCUR),Y BMI ?L7 LDA ZP09C STA (STMCUR),Y DEY LDA ZP09B STA (STMCUR),Y CLC ADC ZP0A2 STA ZP09B LDA ZP09C ADC ZP0A3 STA ZP09C LDY #$02 LDA (STMCUR),Y ADC STMCUR BCC ?L6 INC STMCUR+1 BCS ?L6 ?L7 JSR L0421 JMP L0422 RENUM_8 JSR L0423 CPX #$1B BNE RENUM_4 DEC STATE_NDX RENUM_9 LDY STATE_NDX INY CPY STATE_LEN BCS RENUM_4 RENUM_10 JSR RENUM_14 JMP RENUM_4 RENUM_11 JSR L0423 CPX #$17 BEQ RENUM_13 CPX #$18 BNE RENUM_4 .BY $2C RENUM_12 INC STATE_NDX RENUM_13 LDA STATE_NDX CMP STATE_LEN BCS RENUM_4 PHA JSR RENUM_15 PLA STA STATE_NDX JSR L0429 JMP RENUM_13 RENUM_14 INC STATE_NDX RENUM_15 LDY STATE_NDX STY ZP0DC LDA (STMCUR),Y BEQ ?L18 CMP #$0F BCS ?L18 JSR Y0189 JSR L0431 LDA FR0+1 BMI ?L18 BCS ?L18 JSR RENUM_19 PHP BCS ?L16 STA FR0 STY FR0+1 ?L16 JSR L0124 ASL FR0 PLP ROR FR0 LDY STATE_NDX LDX #$05 ?L17 LDA FR0,X DEY STA (STMCUR),Y DEX BPL ?L17 ?L18 RTS RENUM_19 LDA FR0 CMP ZP099 LDA FR0+1 SBC ZP09A BCS ?L20 LDA FR0 LDY FR0+1 RTS ?L20 LDA FR1+2 STA ZP0DA LDA FR1+3 STA ZP0DB LDA ZP09B STA FR1 LDA ZP09C ?L21 STA FR1+1 LDY #$01 LDA (ZP0DA),Y BMI ?L25 CMP FR0+1 BNE ?L22 DEY LDA (ZP0DA),Y CMP FR0 ?L22 BCS ?L24 LDY #$02 LDA (ZP0DA),Y ADC ZP0DA STA ZP0DA BCC ?L23 INC ZP0DB ?L23 DEY LDA (ZP0DA),Y BMI ?L25 CLC LDA FR1 ADC ZP0A2 STA FR1 LDA FR1+1 ADC ZP0A3 JMP ?L21 ?L24 CLC BEQ ?L26 ?L25 SEC ?L26 LDA FR1 LDY FR1+1 RTS ;------------------------------ L0423 INC STATE_NDX L0429 JSR Y0189 BCC L0429 TAX LDA L0441,X BNE L0429 RTS ;------------------------------ ;*** BLOAD + BRUN *** BLOAD_CMD LDA #$00 .BY $2C BRUN_CMD LDA #$80 STA OBJ_RUN_FLAG LDA #DUMMY_RTS STA RUNAD STY RUNAD+1 LDA #$04 LDY #$01 JSR OPENIOCB_X INC PORTB JSR OBGET_BYTE CMP #$FF BNE STATUS_OK INY BNE STATUS_OK ?L1 LDA #DUMMY_RTS STA INITAD STY INITAD+1 JSR OBGET_BYTE CMP #$FF BNE ?L2 CPY #$FF BEQ ?L1 ?L2 STA ICBAL,X TYA STA ICBAH,X JSR OBGET_BYTE SEC SBC ICBAL,X STA ICBLL,X TYA SBC ICBAH,X STA ICBLH,X INC ICBLL,X BNE ?L3 INC ICBLH,X ?L3 JSR CIOV TYA BMI OBLOA_ERR1 JSR OBLOA_INIT LDA ICSTA+$10 CMP #$03 BNE ?L1 LDX #$10 LDA #$0C STA ICCOM,X JSR CIOV BIT OBJ_RUN_FLAG BPL ?L4 JSR OBLOA_RUN ?L4 LDA #$FE STA PORTB DUMMY_RTS RTS STATUS_OK LDA #$01 OBLOA_ERR1 TAY OBLOA_ERR2 JSR OS_RAM_ON TYA JMP ERR_FUN ;* ??? OBLOA_INIT JMP (INITAD) OBLOA_RUN JMP (RUNAD) OBGET_BYTE LDA #$07 LDX #$10 STA ICCOM,X LDA #$00 STA ICBLL,X STA ICBLH,X JSR CIOV BMI OBLOA_ERR2 PHA LDA #$00 STA ICBLL,X JSR CIOV BMI OBLOA_ERR2 TAY PLA RTS TURBOBAS_TOP ;------------------------------ ; ENDE PART 4 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 5 ;------------------------------ ; .LI OFF ;------------------------------ ; VORPROGRAMM, WIRD NACH BEEN- ; DIGUNG NICHT MEHR GEBRAUCHT ;------------------------------ ORG TOP_LOADER ;------------------------------ LDX KEYBDV+4 LDY KEYBDV+5 INX BNE L_1 INY L_1 STX GETKEY_VEC+1 STY GETKEY_VEC+2 ;------------------------------ ; VEKTOR FUER NMI + IRQ IN DEN ; IN DEN O.S.RAM SCHREIBEN ; LDA #$00 STA NMIEN SEI LDA #$FE STA PORTB LDA #NMI_CALL STA NMI_VEC+1 LDA #IRQ_AUFRUF STA IRQ_VEC+1 ;------------------------------ ; ZEICHENSAETZE IN RAM KOPIEREN ; LDA #$CC JSR COPY_ZSATZ LDA #$E0 JSR COPY_ZSATZ ;------------------------------ LDA #$40 STA NMIEN CLI LDA #$FF STA PORTB ;------------------------------ ; REST VON DISK LADEN JSR TB_HIGH_READ ;------------------------------ LDA #TURBOBAS_TOP STA MEMLO STY MEMLO+1 ;------------------------------ LDA DOSINI LDY DOSINI+1 STA DOS_ADR_SAV+1 STY DOS_ADR_SAV+2 ;------------------------------ LDA #RESET_VEC STA DOSINI STY DOSINI+1 ;------------------------------ LDA #$FE STA PORTB STA PROG_CLR ;------------------------------ LDA #$01 STA BASICF ORA BOOT STA BOOT LDA #$00 STA COLDST ;------------------------------ JSR NEW_BAS_PTR LDA #$00 STA ZP0A0 STA ZP0A1 JSR L0467 LDY #$1F LDX #$8A JSR L0468 LDY #$1E TOPLOAD_1 LDA INIT_TAB,Y STA (ZP097),Y DEY BPL TOPLOAD_1 JSR L0421 LDA #>[L0984-1] PHA LDA #<[L0984-1] PHA JSR SET_RAMTOP DEC PORTB JMP RUN_1 ;------------------------------ INIT_TAB .BY $00,$00,$19,$07,$0D,$67,$14,$19 .BY $25,$0F,$0D .BYTE 'D:AUTORUN.BAS' .BY $16,$01,$00,$06,$06,$16,$16 ;------------------------------ ; SPEICHERGRENZEN SETZEN ; EDITOR OEFFNEN ; SET_RAMTOP LDA #$FF STA PORTB LDA #$C0 STA RAMTOP LSR STA APPMHI+1 LDA EDITRV+1 PHA LDA EDITRV PHA RTS ;------------------------------ ; 4 PAGES FUER Z.S. KOPIEREN ; COPY_ZSATZ STA FR0+1 LDY #$00 STY FR0 LDX #$04 ?L1 LDA #$FF STA PORTB ?L2 LDA (FR0),Y STA XTAB3,Y INY BNE ?L2 DEC PORTB ?L3 LDA XTAB3,Y STA (FR0),Y INY BNE ?L3 INC FR0+1 DEX BNE ?L1 RTS ;------------------------------ ; PARTE DIE UNTER DEN O.S. ROM ; KOMMEN, LESEN ; TB_HIGH_READ LDX #$10 LDA #$D6 STA ICBAL,X LDA #$00 STA ICBAH,X STA ICBLH,X LDA #$04 STA ICBLL,X LDA #$07 STA ICCOM,X JSR CIOV BMI ?L6 LDA #TOP_LOAD_BUF STA ZP0DB STA ICBAH,X LDA FR0+4 SBC FR0+2 STA ZP0DC LDA FR0+5 SBC FR0+3 STA ZP0DD INC ZP0DC BNE ?L1 INC ZP0DD ?L1 LDA ZP0DC STA ICBLL,X LDA ZP0DD STA ICBLH,X JSR CIOV BMI ?L7 DEC PORTB LDY #$00 LDX ZP0DD BEQ ?L3 ?L2 LDA (ZP0DA),Y STA (FR0+2),Y INY BNE ?L2 INC FR0+3 INC ZP0DB DEX BNE ?L2 ?L3 LDX ZP0DC BEQ ?L5 ?L4 LDA (ZP0DA),Y STA (FR0+2),Y INY DEX BNE ?L4 ?L5 LDA #$FF STA PORTB BMI TB_HIGH_READ ?L6 RTS ?L7 JMP (DOSVEC) TOP_LOAD_BUF ;------------------------------ ORG INITAD .WORD TOP_LOADER ;------------------------------ ORG OS_RAM_C0 ;------------------------------ ;*** DEL *** DEL_CMD JSR LOOP_BEGIN JSR L0489 JSR L0490 STA ZP0A0 STY ZP0A1 JSR L0490 JSR L0467 ?L1 LDY #$01 LDA (STMCUR),Y CMP FR0+1 BNE ?L2 DEY LDA (STMCUR),Y CMP FR0 ?L2 BCC ?L3 BNE ?L5 ?L3 LDY #$02 CLC LDA (STMCUR),Y TAY ADC STMCUR STA STMCUR BCC ?L4 INC STMCUR+1 ?L4 LDX #$8A JSR L0495 JMP ?L1 ?L5 JSR L0497 JMP L0422 ;------------------------------ ;*** DUMP *** DUMP_CMD INY CPY STATE_LEN BCS ?L1 JSR OPENWRITE ?L1 LDA #$00 STA ZP0B9 ?L2 JSR WRITE_EOL LDA BRKKEY BEQ ?L4 LDA ZP0B9 JSR FP_VVTP_FR0 LDA ZP09D CMP STMTAB LDA ZP09E SBC STMTAB+1 BCS ?L5 LDA ZP0B9 JSR ?L3 INC ZP0B9 BNE ?L2 ?L3 JSR WRITE_VARNAME JSR L0510 LDA ZP0D2 CMP #$C0 BCS ?L7 CMP #$80 BCS DUMP_9 CMP #$40 BCS DUMP_9 LDA #$3D JSR WRITE_BYTE JMP CALL_FP_ASC1 ?L4 DEC BRKKEY ?L5 LDA ZP0B5 BEQ ?L6 JSR IO_CLOSE LDA #$00 STA ZP0B5 ?L6 RTS ?L7 LDY #$4F LSR BCS DUMP_8 LDY #$5D LSR BCS DUMP_8 LDA #$3F JMP WRITE_BYTE DUMP_8 TYA JSR L0519 LDY #$00 LDA (FR0),Y TAX INY LDA (FR0),Y JMP L0520 DUMP_9 LDA FR0+5 PHA LDA FR0+4 PHA LDA FR0+3 LDX FR0+2 JSR L0520 LDA #$2C JSR WRITE_BYTE PLA TAX PLA JMP L0520 ;------------------------------ L0489 TXA PHA LDA BASMEMTOP PHA LDA BASMEMTOP+1 PHA LDA ZP0B2 PHA LDA ZP0A0 PHA LDA ZP0A1 PHA ?L1 JSR POP_1 BCS L0523 LDY ZP0A1 BNE ?L2 LDA #XTAB8 STA ZP0A1 ?L2 TAY BMI ?L3 LDY #$00 LDA (ZP0A0),Y INY STA (BASMEMTOP),Y LDA (ZP0A0),Y INY STA (BASMEMTOP),Y BCC ?L1 ?L3 LDY #$00 LDA (ZP0A0),Y LDY #$13 STA (BASMEMTOP),Y LDY #$01 LDA (ZP0A0),Y LDY #$14 STA (BASMEMTOP),Y BCC ?L1 L0523 PLA STA ZP0A1 PLA STA ZP0A0 PLA STA ZP0B2 PLA STA BASMEMTOP+1 STA APPMHI+1 PLA STA BASMEMTOP STA APPMHI PLA TAX RTS L0497 PHA LDA BASMEMTOP PHA LDA BASMEMTOP+1 PHA LDA ZP0B2 PHA LDA ZP0A0 PHA LDA ZP0A1 PHA LDA STMCUR PHA LDA STMCUR+1 PHA LDA ZP0BE PHA LDA ZP0BF PHA JSR L0528 JSR L0421 L0497_1 JSR POP_1 BCS ?L5 PHA LDY ZP0A1 INY BEQ ?L2 JSR L0402 BCC ?L3 ?L2 LDA #$00 STA STMCUR STA STMCUR+1 ?L3 LDY #$01 PLA BPL ?L4 LDY #$13 ?L4 LDA STMCUR STA (BASMEMTOP),Y INY LDA STMCUR+1 STA (BASMEMTOP),Y JMP L0497_1 ?L5 PLA STA ZP0BF PLA STA ZP0BE PLA STA STMCUR+1 PLA STA STMCUR JMP L0523 XTAB8 .BY $FF,$FF L0528 LDA VVTP STA ZP0A0 LDA VVTP+1 STA ZP0A1 ?L1 LDA ZP0A0 CMP STMTAB LDA ZP0A1 SBC STMTAB+1 BCS ?L3 LDY #$00 LDA (ZP0A0),Y AND #$C0 CMP #$C0 BNE ?L2 STA (ZP0A0),Y ?L2 CLC LDA ZP0A0 ADC #$08 STA ZP0A0 BCC ?L1 INC ZP0A1 BCS ?L1 ?L3 RTS ;------------------------------ ;*** SETCOLOR *** SETCOLOR_CMD JSR L0399 AND #$0F ASL ZP09B ASL ZP09B ASL ZP09B ASL ZP09B ORA ZP09B LDX ZP09A BNE ERROR3_2 LDX ZP099 CPX #$05 BCS ERROR3_2 STA COLOR0,X RTS ;------------------------------ SOUND_OFF LDX #$07 LDA #$00 ?L1 STA AUDF1,X DEX BPL ?L1 RTS ;------------------------------ ERROR3_2 JMP ERROR_3 ;------------------------------ ;*** SOUND + DSOUND *** DSOUND_CMD SOUND_CMD STA ZP0A2 INY CPY STATE_LEN BCS SOUND_OFF JSR L0540 LDY #$00 BIT ZP0A2 BPL ?L1 ASL LDY #$78 ?L1 CMP #$04 BCS ERROR3_2 ASL PHA STY AUDCTL LDA #$03 STA SKCTL JSR L0399 PLA TAX LDA ZP099 STA AUDF1,X BIT ZP0A2 BPL ?L2 INX INX LDA ZP09A STA AUDF1,X ?L2 LDA ZP09B ASL ASL ASL ASL ORA FR0 STA AUDC1,X RTS ;------------------------------ ;*** POSITION *** POSITION_CMD POSITION JSR L0543 STA COLCRS STY COLCRS+1 JSR L0540 STA ROWCRS RTS ;------------------------------ ;*** COLOR *** COLOR_CMD JSR L0543 STA BAS_COLOR RTS ;------------------------------ ;*** FCOLOR *** FCOLOR_CMD JSR L0543 STA FILDAT RTS ;------------------------------ ;*** FILLTO + DRAWTO *** FILLTO_CMD LDA #$12 .BY $2C DRAWTO_CMD LDA #$11 PHA JSR POSITION LDA BAS_COLOR STA ATACHR LDX #$60 LDA #$0C STA ICAX1,X LDA #$00 STA ICAX2,X PLA JMP L0546 ;------------------------------ ;*** GRAPHICS *** GRAPHICS_CMD LDX #$06 STX CIO_KANAL JSR IO_CLOSE JSR L0543 LDX #SCREEN_NAME STX INBUFF STY INBUFF+1 LDX #$06 AND #$F0 EOR #$1C TAY LDA FR0 JSR OPENIOCB JMP IO_STATUS ;------------------------------ ;*** PLOT *** PLOT_CMD JSR POSITION LDY BAS_COLOR LDX #$60 JMP WRITE_BYTE2 ;------------------------------ L0749 LDX ZP0B4 BNE L0552 LDA ZP0C2 JSR WRITE_BYTE L0552 LDX ZP0B4 LDA #$05 JSR L0553 JSR CIOCALL_1 JMP IO_STATUS ;------------------------------ WRITE_EOL LDA #$9B WRITE_BYTE LDX ZP0B5 WRITE_BYTE1 TAY JSR L0555 WRITE_BYTE2 LDA ICAX1,X STA ICAX1Z LDA ICAX2,X STA ICAX2Z JSR PUTBYTE L0641 TYA JMP IO_ERR_BRK L0553 STA CIO_CMD L0555 STX CIO_KANAL JMP IONR_MUL ;------------------------------ ;*** ENTER *** ENTER_CMD LDA #$04 JSR OPENIOCB_7 STA ZP0B4 JMP L0561 OPENWRITE LDA #$08 JSR OPENIOCB_7 STA ZP0B5 RTS ;------------------------------ OPENIOCB_7 LDY #$07 OPENIOCB_X STY CIO_KANAL PHA JSR IONR_MUL JSR IO_CLOSE_NR LDY #$03 STY CIO_CMD PLA LDY #$00 JSR L0563 LDA #$07 RTS ;------------------------------ ;*** LOAD *** RUN_LOAD_BAS LDA #$FF .BY $2C LOAD_CMD LDA #$00 PHA LDA #$04 JSR OPENIOCB_7 PLA LOAD_BAS PHA LDA #$07 STA CIO_CMD STA PROG_CLR JSR IONR_MUL LDY #$0E JSR CIOCALL_2 JSR IO_STATUS LDA ADR_580 ORA ADR_581 BNE ERROR21_1 LDX #$8C ?L1 CLC LDA BAS_LOMEM ADC ADR_500,X TAY LDA BAS_LOMEM+1 ADC ADR_501,X CMP MEMTOP+1 BCC ?L3 BNE ?L2 CPY MEMTOP BCC ?L3 ?L2 JMP ERROR19_1 ?L3 STA LINZBS+1,X STY LINZBS,X DEX DEX CPX #$82 BCS ?L1 JSR LO_SA_BASPRG JSR CLR_1 LDA #$00 STA PROG_CLR PLA BEQ ?L4 RTS ?L4 JMP L0579 ERROR21_1 LDA #$00 STA PROG_CLR LDA #$15 JMP ERROR_ROUT ;------------------------------ ;*** SAVE *** SAVE_CMD LDA #$08 JSR OPENIOCB_7 SAVE_BAS LDA #$0B STA CIO_CMD LDX #$80 ?L1 SEC LDA LINZBS,X SBC BAS_LOMEM STA ADR_500,X INX LDA LINZBS,X SBC BAS_LOMEM+1 STA ADR_500,X INX CPX #$8E BCC ?L1 JSR IONR_MUL LDY #$0E JSR CIOCALL_2 JSR IO_STATUS LO_SA_BASPRG JSR IONR_MUL LDA VNTP STA INBUFF LDA VNTP+1 STA INBUFF+1 LDY ADR_58D DEY TYA LDY ADR_58C JSR CIOCALL_3 JSR IO_STATUS JMP IO_CLOSE ;------------------------------ ;*** CSAVE *** CSAVE_CMD LDA #$08 JSR OPEN_CASS JMP SAVE_BAS ;------------------------------ ;*** CLOAD *** CLOAD_CMD LDA #$04 JSR OPEN_CASS LDA #$00 JMP LOAD_BAS ;------------------------------ OPEN_CASS PHA LDX #CASSETTE_NAME STX INBUFF+1 LDX #$07 PLA TAY LDA #$80 JSR OPENIOCB JSR IO_STATUS LDA #$07 RTS ;------------------------------ OPENIOCB PHA LDA #$03 JSR L0553 PLA STA ICAX2,X TYA STA ICAX1,X JSR CIOCALL_4 JMP SET_INBUFF_580 ;------------------------------ ; ENDE PART 5 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 6 ;------------------------------ ; .LI OFF ;------------------------------ ;*** XIO + OPEN *** XIO_CMD JSR L0543 .BY $2C OPEN_CMD LDA #$03 STA CIO_CMD JSR GET_IOCBNR JSR L0543 PHA JSR L0543 TAY PLA L0563 PHA TYA PHA LDY STATE_NDX INY CPY STATE_LEN BCS SET_DISKWILD JSR LET_CMD L0598 JSR L0595 JSR IONR_MUL PLA STA ICAX2,X PLA STA ICAX1,X JSR CIOCALL_1 JSR L0596 JMP IO_STATUS ;------------------------------ SET_DISKWILD LDA #DISKWILD_NAME LDY #$05 JSR L0597 JMP L0598 ;------------------------------ ;*** STATUS *** STATUS_CMD JSR GET_IOCBNR LDA #$0D JSR CIOCALL_6 TYA JMP L0600 ;------------------------------ ;*** NOTE *** NOTE_CMD LDA #$26 JSR L0601 LDA ICSPR,X LDY ICSPR+1,X JSR L0602 JSR IONR_MUL LDA ICSPR+2,X JMP L0600 ;------------------------------ ;*** POINT *** POINT_CMD JSR GET_IOCBNR JSR L0543 JSR IONR_MUL LDA FR0 STA ICSPR,X LDA FR0+1 STA ICSPR+1,X JSR L0543 JSR IONR_MUL LDA FR0 STA ICSPR+2,X LDA #$25 STA CIO_CMD JMP L0603 ;------------------------------ ;*** PUT *** PUT_CMD JSR IOCBNR_J_N ?L1 JSR L0543 LDX CIO_KANAL JSR WRITE_BYTE1 LDY STATE_NDX INY CPY STATE_LEN BCC ?L1 RTS ;------------------------------ ;*** GET *** GET_CMD LDA (STMCUR),Y CMP #$1C BEQ ?L2 ?L1 JSR GETKEY_1 JSR L0600 LDY STATE_NDX INY CPY STATE_LEN BCC ?L1 RTS ?L2 JSR GET_IOCBNR GET_3 JSR IONR_MUL LOCATE_GET JSR GETBYTE TAX TYA JSR IO_ERR_BRK TXA JSR L0600 LDY STATE_NDX INY CPY STATE_LEN BCC GET_3 NUR_RTS RTS ;------------------------------ ;*** LOCATE *** LOCATE_CMD JSR POSITION LDX #$60 BNE LOCATE_GET ;------------------------------ IOCBNR_J_N LDA (STMCUR),Y CMP #$1C BEQ GET_IOCBNR LDA #$00 BEQ IONR_ST_MUL GET_IOCBNR JSR L0614 IONR_ST_MUL STA CIO_KANAL IONR_MUL LDA CIO_KANAL ASL ASL ASL ASL TAX BPL NUR_RTS LDA #$14 JMP ERROR_ROUT IO_STATUS JSR IONR_MUL LDA ICSTA,X IO_ERR_BRK BPL NUR_RTS LDY #$00 STY DSPFLG CMP #$80 BNE ?L1 STY BRKKEY LDX PROG_CLR BEQ NUR_RTS JMP L0031 ?L1 LDY CIO_KANAL CMP #$88 BEQ ?L4 ?L2 STA ZP0B9 CPY #$07 BNE ?L3 JSR IO_CLOSE ?L3 JSR L0620 JMP ERROR_IO ?L4 CPY #$07 BNE ?L2 LDX #$5D CPX ZP0C2 BNE ?L2 JSR IO_CLOSE JMP L0623 IO_CLOSE JSR IONR_MUL BEQ NUR_RTS IO_CLOSE_NR LDA #$0C JMP CIOCALL_6 CIOCALL_1 LDY #$FF CIOCALL_2 LDA #$00 CIOCALL_3 STA ICBLH,X TYA STA ICBLL,X CIOCALL_4 LDA INBUFF+1 LDY INBUFF STA ICBAH,X TYA STA ICBAL,X CIOCALL_5 LDA CIO_CMD CIOCALL_6 STA ICCOM,X JMP CIO_JUMP ;------------------------------ L0600 LDY #$00 L0602 PHA TYA PHA JSR LET_CMD PLA STA FR0+1 PLA STA FR0 JSR L0124 JMP L0625 ;------------------------------ IO_CL_ALL JSR SOUND_OFF LDY #$07 STY CIO_KANAL ?L1 JSR IO_CLOSE DEC CIO_KANAL BNE ?L1 RTS ;------------------------------ ;*** CLOSE *** CLOSE_CMD INY CPY STATE_LEN BCS IO_CL_ALL LDA #$0C L0601 STA CIO_CMD JSR GET_IOCBNR L0603 JSR CIOCALL_5 JMP IO_STATUS ;------------------------------ PRINT_READY LDX #$06 ?L1 STX CIX LDA READY_TEXT,X JSR WRITE_BYTE LDX CIX DEX BPL ?L1 RTS ;------------------------------ READY_TEXT .BYTE $9B,'YDAER' .BYTE $9B ;------------------------------ L0595 JSR L0632 LDA FR0 STA INBUFF LDA FR0+1 STA INBUFF+1 LDY FR0+2 LDX FR0+3 BEQ ?L1 LDY #$FF ?L1 LDA (INBUFF),Y STA ZP097 STY ZP098 LDA #$9B STA (INBUFF),Y STA MEOLFLG RTS L0596 LDY ZP098 LDA ZP097 STA (INBUFF),Y LDA #$00 STA MEOLFLG JMP SET_INBUFF_580 ;------------------------------ ;*** DIRECTORY *** DIR_CMD LDA #$06 JSR OPENIOCB_7 ?L1 LDX #$70 JSR GETBYTE BMI ?L2 LDX #$00 JSR WRITE_BYTE1 BPL ?L1 ?L2 TYA PHA LDX #$70 JSR IO_CLOSE_NR PLA CMP #$88 BEQ ?L3 JMP ERROR_ROUT ?L3 RTS ;------------------------------ ;** RENAME,LOCK,UNLOCK,DELETE ** RENAME_CMD LDA #$20 .BY $2C LOCK_CMD LDA #$23 .BY $2C UNLOCK_CMD LDA #$24 .BY $2C DELETE_CMD LDA #$21 STA CIO_CMD LDA #$07 STA CIO_KANAL LDA #$00 TAY JMP L0563 ;------------------------------ ;*** BPUT + BGET *** BPUT_CMD LDA #$0B .BY $2C BGET_CMD LDA #$07 PHA JSR GET_IOCBNR JSR L0119 JSR IONR_MUL LDA ZP09B STA ICBAL,X LDA ZP09C STA ICBAH,X LDA FR0 STA ICBLL,X LDA FR0+1 STA ICBLH,X PLA L0546 JSR CIOCALL_6 JMP L0641 ;------------------------------ GETBYTE LDA #$07 STA CIO_CMD LDY #$00 JMP CIOCALL_2 ;------------------------------ GETKEY_1 JSR GETKEY CPY #$80 BCS ?L1 RTS ?L1 JMP L0641 ;------------------------------ ;*** %PUT + %GET *** PUTFL_CMD LDA #$0B .BY $2C GETFL_CMD LDA #$07 STA CIO_CMD JSR IOCBNR_J_N ?L1 JSR L0644 JSR IONR_MUL LDA #$D4 STA INBUFF LDA #$00 STA INBUFF+1 LDY #$06 JSR CIOCALL_2 JSR SET_INBUFF_580 JSR IO_STATUS LDA CIO_CMD CMP #$07 BNE ?L2 JSR L0625 ?L2 LDY STATE_NDX INY CPY STATE_LEN BCC ?L1 RTS ;------------------------------ ;*** FLOATING POINT SIGN *** X_FPASIGN LDY OPSTKX BNE ?L1 DEC ARSLVL LDX ARSLVL DEC ARSLVL LDA XTAB1,X JSR CALC_VARTAB LDY #$02 LDA XTAB1_21,X STA (ZP09D),Y INY LDA XTAB1_41,X STA (ZP09D),Y INY LDA XTAB1_61,X STA (ZP09D),Y INY LDA XTAB1_81,X STA (ZP09D),Y INY LDA XTAB1_A1,X STA (ZP09D),Y INY LDA XTAB1_C1,X STA (ZP09D),Y RTS ?L1 LDA #$80 STA ZP0B1 RTS ;------------------------------ ;*** *** Y0133 INC ZP0B0 Y0126 LDY OPSTKX PLA PLA JMP LET_4 ;------------------------------ ;*** *** Y0132 LDA #$40 STA ZP0B1 Y0131 BIT ZP0B1 BPL ?L1 LDA ARSLVL STA ZP0AF DEC ARSLVL ?L1 LDA ZP0B0 TAY BEQ ?L2 DEC ZP0B0 JSR L0115 BMI ?L3 ?L2 STY ZP098 STA ZP097 JSR L0115 BMI ?L3 STA ZP0F5 STY ZP0F6 JSR L0663 BIT ZP0B1 BVC ?L4 LDA #$00 STA ZP0B1 RTS ?L3 JMP ERROR_9 ?L4 LSR ZP0D2 BCC ?L3 LDA ZP0F5 CMP FR0+2 LDA ZP0F6 SBC FR0+3 BCS ?L3 LDA ZP097 CMP FR0+4 LDA ZP098 SBC FR0+5 BCS ?L3 LDA FR0+5 BNE L0665 LDY FR0+5 DEY BNE L0665 LDA ZP0F5 STA ZP0F7 LDA ZP0F6 STA ZP0F8 JMP L0666 L0665 LDY #$00 STY ZP0F7 STY ZP0F8 LDY #$10 ?L6 LSR FR0+5 ROR FR0+4 BCC ?L7 CLC LDA ZP0F7 ADC ZP0F5 STA ZP0F7 LDA ZP0F8 ADC ZP0F6 STA ZP0F8 ?L7 ASL ZP0F5 ROL ZP0F6 DEY BNE ?L6 L0666 CLC LDA ZP097 ADC ZP0F7 STA ZP0F5 LDA ZP098 ADC ZP0F8 ASL ZP0F5 ROL STA ZP0F6 TAY LDA ZP0F5 ASL ROL ZP0F6 ADC ZP0F5 TAX TYA ADC ZP0F6 TAY TXA ADC FR0 TAX TYA ADC FR0+1 TAY TXA ADC STARP STA ZP0F5 TYA ADC STARP+1 STA ZP0F6 BIT ZP0B1 BPL L0671 LDX ZP0AF STX ARSLVL DEC ARSLVL LDY #$00 STY ZP0B1 LDA XTAB1_20,X STA (ZP0F5),Y INY LDA XTAB1_40,X STA (ZP0F5),Y INY LDA XTAB1_60,X STA (ZP0F5),Y INY LDA XTAB1_80,X STA (ZP0F5),Y INY LDA XTAB1_A0,X STA (ZP0F5),Y INY LDA XTAB1_C0,X STA (ZP0F5),Y RTS L0671 INC ARSLVL LDX ARSLVL LDY #$05 LDA (ZP0F5),Y STA XTAB1_C0,X DEY LDA (ZP0F5),Y STA XTAB1_A0,X DEY LDA (ZP0F5),Y STA XTAB1_80,X DEY LDA (ZP0F5),Y STA XTAB1_60,X DEY LDA (ZP0F5),Y STA XTAB1_40,X DEY LDA (ZP0F5),Y STA XTAB1_20,X LSR XTAB3,X RTS ;------------------------------ ;*** *** Y0130 LDA ZP0B0 BEQ ?L1 JSR L0679 STY ZP098 STA ZP097 ?L1 JSR L0679 SEC SBC #$01 STA ZP0F5 TYA SBC #$00 STA ZP0F6 JSR L0663 LDA ZP0B1 BPL ?L2 ORA ZP0B0 STA ZP0B1 LDY FR0+5 LDA FR0+4 JMP ?L3 ?L2 LDA FR0+2 LDY FR0+3 ?L3 LDX ZP0B0 BEQ ?L5 DEC ZP0B0 CPY ZP098 BCC L0683 BNE ?L4 CMP ZP097 BCC L0683 ?L4 LDY ZP098 LDA ZP097 ?L5 SEC SBC ZP0F5 STA FR0+2 TAX TYA SBC ZP0F6 STA FR0+3 BCC L0683 TAY BNE L0685 TXA BEQ L0683 L0685 JSR L0686 CLC LDA FR0 ADC ZP0F5 STA FR0 LDA FR0+1 ADC ZP0F6 STA FR0+1 BIT ZP0B1 BPL L0687 L0688 RTS L0687 JMP L0125 L0679 JSR L0115 BNE L0688 TAX BNE L0688 L0683 LDA #$05 JMP ERROR_ROUT ;------------------------------ ;*** *** Y0128 JSR L0632 L0762 LDA FR0 STA ZP099 LDA FR0+1 STA ZP09A LDA FR0+2 STA ZP0A2 LDY FR0+3 STY ZP0A3 LDY OPSTKX BEQ ?L1 LDA #$80 STA ZP0B1 JSR LET_4 LDA FR0+3 LDY FR0+2 ROL ZP0B1 BCS ?L2 ?L1 JSR L0632 LDA FR0+5 LDY FR0+4 ?L2 CMP ZP0A3 BCC ?L3 BNE ?L4 CPY ZP0A2 BCS ?L4 ?L3 STA ZP0A3 STY ZP0A2 ?L4 CLC LDA FR0 STA ZP09B ADC ZP0A2 TAY LDA FR0+1 STA ZP09C ADC ZP0A3 TAX SEC TYA SBC STARP STA ZP0F9 TXA SBC STARP+1 STA ZP0FA JSR MOVE_SUB LDA ZP0D3 JSR FP_VVTP_FR0 SEC LDA ZP0F9 SBC FR0 TAY LDA ZP0FA SBC FR0+1 TAX LDA #$02 AND ZP0B1 BEQ L0695 LDA #$00 STA ZP0B1 CPX FR0+3 BCC L0696 BNE L0695 CPY FR0+2 BCS L0695 L0696 RTS L0695 STY FR0+2 STX FR0+3 JMP L0625 ;------------------------------ ; ENDE PART 6 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 7 ;------------------------------ ; .LI OFF ;------------------------------ ;*** COM + DIM *** COM_CMD DIM_CMD LDY STATE_NDX CPY STATE_LEN BCC ?L1 RTS ?L1 JSR LET_CMD LSR ZP0D2 BCS ?L4 SEC ROL ZP0D2 BMI ?L5 LDA ZP0F5 ADC #$01 STA ZP0F5 STA FR0+2 LDA ZP0F6 ADC #$00 BMI ?L4 STA FR0+3 STA ZP0F6 LDA ZP097 ADC #$01 STA FR0+4 LDA ZP098 ADC #$00 STA FR0+5 BMI ?L4 LDY #$00 STY ZP0F7 STY ZP0F8 LDY #$10 ?L2 LDA ZP0F5 LSR BCC ?L3 CLC LDA ZP0F7 ADC FR0+4 STA ZP0F7 LDA ZP0F8 ADC FR0+5 STA ZP0F8 BMI ?L4 ?L3 ROR ZP0F8 ROR ZP0F7 ROR ZP0F6 ROR ZP0F5 DEY BNE ?L2 ASL ZP0F5 ROL ZP0F6 BMI ?L4 LDX ZP0F6 LDA ZP0F5 ASL ROL ZP0F6 BMI ?L4 ADC ZP0F5 STA ZP0F5 TAY TXA ADC ZP0F6 STA ZP0F6 BPL DIM_6 ?L4 JMP ERROR_9 ?L5 LDA #$00 STA FR0+2 STA FR0+3 LDY ZP0F5 STY FR0+4 LDA ZP0F6 STA FR0+5 BNE DIM_6 CPY #$00 BEQ ?L4 DIM_6 LDX #$8E JSR L0703 SEC LDA ZP097 SBC STARP STA FR0 LDA ZP098 SBC STARP+1 STA FR0+1 JSR L0625 LDA #$00 TAY LDX ZP0F6 BEQ ?L8 ?L7 STA (ZP097),Y INY BNE ?L7 INC ZP098 DEX BNE ?L7 ?L8 LDX ZP0F5 BEQ ?L10 ?L9 STA (ZP097),Y INY DEX BNE ?L9 ?L10 JMP DIM_CMD ;------------------------------ L0467 JSR L0421 L0402 LDA STMCUR STA ZP0BE LDA STMCUR+1 STA ZP0BF LDA ZP0A1 TAX ASL TAY LDA (BAS_LOMEM),Y STA STMCUR+1 INY LDA (BAS_LOMEM),Y ?L1 STA STMCUR LDY #$01 TXA CMP (STMCUR),Y BNE ?L3 DEY LDA (STMCUR),Y CMP ZP0A0 BCS ?L5 ?L2 LDY #$02 LDA (STMCUR),Y ADC STMCUR BCC ?L1 INC STMCUR+1 BCS ?L1 ?L3 BCC ?L4 CLC BCC ?L2 ?L4 SEC RTS ?L5 BNE ?L4 CLC RTS ;------------------------------ L0717 LDA #$C1 .BY $2C L0718 LDA #$C2 TAX INY LDA (ZP099),Y BNE ?L3 INY LDA (ZP099),Y ?L3 EOR #$80 JSR CALC_VARTAB TXA CMP (ZP09D),Y BEQ L0715 STA (ZP09D),Y LDA ZP099 LDY #$02 STA (ZP09D),Y INY LDA ZP09A STA (ZP09D),Y JMP L0715 L0421 LDA ZP099 PHA LDA ZP09A PHA LDA #$00 TAY ?L4 STA (BAS_LOMEM),Y INY INY BNE ?L4 LDA STMTAB+1 STA ZP09A LDA STMTAB L0721 STA ZP099 LDY #$04 LDA (ZP099),Y CMP #$4F BEQ L0717 CMP #$5D BEQ L0718 L0715 LDY #$01 LDA (ZP099),Y ASL BCS ?L8 TAY LDA (BAS_LOMEM),Y BNE ?L7 LDA ZP09A STA (BAS_LOMEM),Y INY LDA ZP099 STA (BAS_LOMEM),Y ?L7 CLC LDY #$02 LDA (ZP099),Y ADC ZP099 BCC L0721 INC ZP09A BCS L0721 ?L8 LDA STMTAB STA ZP099 LDA STMTAB+1 STA ZP09A LDY #$00 ?L9 LDA (BAS_LOMEM),Y BNE ?L10 LDA ZP09A STA (BAS_LOMEM),Y INY LDA ZP099 STA (BAS_LOMEM),Y JMP ?L11 ?L10 STA ZP09A INY LDA (BAS_LOMEM),Y STA ZP099 ?L11 INY BNE ?L9 PLA STA ZP09A PLA STA ZP099 RTS ;------------------------------ ERROR30_1 LDA #$1E JMP ERROR_ROUT L0728 LDA (STMCUR),Y INY CPY STATE_LEN BCS ?L1 CMP #$1C BNE ?L2 INC STATE_NDX JSR Y0189 LDA ZP0D2 CMP #$C2 BNE ERROR30_1 LDY #$00 LDA (FR0),Y TAX INY LDA (FR0),Y TAY TXA RTS ?L1 LDA #$00 TAY RTS ?L2 JMP L0543 ;------------------------------ ;*** RESTORE *** RESTORE_CMD JSR L0728 CPY #$00 BMI ?L1 STA DATAZ_PTR STY DATAZ_PTR+1 LDA #$00 STA DATA_PTR RTS ?L1 JMP ERROR_3 ;------------------------------ ;*** READ *** READ_CMD LDA DATAZ_PTR STA ZP0A0 LDA DATAZ_PTR+1 STA ZP0A1 JSR L0402 LDA STMCUR STA INBUFF LDA STMCUR+1 STA INBUFF+1 LDA ZP0BE STA STMCUR LDA ZP0BF STA STMCUR+1 READ_1 LDY #$00 LDA (INBUFF),Y STA DATAZ_PTR INY LDA (INBUFF),Y STA DATAZ_PTR+1 INY LDA (INBUFF),Y STA ZP0F5 STY CIX LDY CIX ?L2 INY LDA (INBUFF),Y STA ZP0F6 INY STY CIX LDA (INBUFF),Y CMP #$01 BEQ READ_5 LDY ZP0F6 CPY ZP0F5 BCS ?L3 DEY BCC ?L2 ?L3 DEY STY CIX READ_4 LDY #$01 LDA (INBUFF),Y BMI ERROR6_1 SEC LDA CIX ADC INBUFF STA INBUFF LDA #$00 STA DATA_PTR ADC INBUFF+1 STA INBUFF+1 BCC READ_1 READ_5 LDA #$00 STA ZP0F5 ?L6 LDA ZP0F5 CMP DATA_PTR BCS ?L8 ?L7 INC CIX LDY CIX LDA (INBUFF),Y CMP #$9B BEQ READ_4 CMP #$2C BNE ?L7 INC ZP0F5 BNE ?L6 ?L8 LDA #$40 STA ZP0A6 INC CIX JMP INPUT_3 ;------------------------------ L0754 LDY CIX LDA (INBUFF),Y CMP #',' CLC BEQ ?L1 CMP #$9B ?L1 RTS ;------------------------------ ERROR6_1 LDA #$06 JMP ERROR_ROUT ;------------------------------ ;*** INPUT *** INPUT_CMD LDA #$3F STA ZP0C2 LDA (STMCUR),Y CMP #$0F BNE ?L1 JSR L0746 JSR INPUT_12 LDY STATE_NDX INC STATE_NDX LDA (STMCUR),Y CMP #$12 BNE ?L1 ROR ZP0B4 ?L1 JSR Y0189 DEC STATE_NDX BCC INPUT_2 JSR L0614 STA ZP0B4 INPUT_2 JSR SET_INBUFF_580 JSR L0749 JSR CHECK_BRK LDY #$00 STY ZP0A6 STY CIX INPUT_3 JSR Y0189 INC STATE_NDX LDA ZP0D2 BMI INPUT_4 JSR CALL_ASC_FP BCS ERROR8_1 JSR L0754 BNE ERROR8_1 JSR L0625 JMP INPUT_7 CHECK_BRK LDA BRKKEY BEQ ?L1 RTS ?L1 DEC BRKKEY JMP BRK_BAS_V ERROR8_1 LDA #$00 STA ZP0B4 LDA #$08 JMP ERROR_ROUT INPUT_4 LDY #$00 LDA #$11 STA L0758 STY OPSTKX STY ZP0B0 STY ARSLVL STY ZP0B1 JSR L0125 DEC CIX LDA CIX STA ZP0F5 LDX #$FF ?L5 INX INC CIX LDY CIX LDA (INBUFF),Y CMP #$9B BEQ ?L6 CMP #$2C BNE ?L5 BIT ZP0A6 BVC ?L5 ?L6 LDY ZP0F5 LDA STATE_NDX PHA TXA LDX #$F3 JSR L0761 PLA STA STATE_NDX JSR L0762 INPUT_7 BIT ZP0A6 BVC ?L8 INC DATA_PTR LDX STATE_NDX INX CPX STATE_LEN BCS ?L9 JSR L0754 BCC ?L11 JMP READ_4 ?L8 LDX STATE_NDX INX CPX STATE_LEN BCC ?L10 ?L9 JSR SET_INBUFF_580 LDA #$00 STA ZP0B4 RTS ?L10 JSR L0754 BCC ?L11 JMP INPUT_2 ?L11 INC CIX JMP INPUT_3 INPUT_12 LDX #$00 LDA FR0 STA ICBAL,X LDA FR0+1 STA ICBAH,X LDA FR0+2 STA ICBLL,X LDA FR0+3 STA ICBLH,X LDA #$0B JMP L0546 ;------------------------------ ORG OS_RAM_D8 ;------------------------------ ;*** MOVE *** MOVE_CMD JSR L0399 STA ZP0A2 STY ZP0A3 JMP MOVE_SUB ;------------------------------ ;*** -MOVE *** MOVE_NEG_CMD JSR L0399 STA ZP0A2 STY ZP0A3 JMP MOVE_D_SUB ;------------------------------ ;*** + *** ADDIT_FUN JSR L0768 JSR L0265 JMP L0769 ;------------------------------ ;*** - *** SUBTR_FUN JSR L0768 JSR L0320 JMP L0769 ;------------------------------ ;*** * *** MULTIPL_FUN JSR L0768 JSR L0287 JMP L0769 ;------------------------------ ;*** / *** DIVIS_FUN JSR L0768 JSR L0317 JMP L0769 ;------------------------------ ;*** *** Y0129 LDX ARSLVL LDA XTAB1_20,X BEQ ?L1 EOR #$80 STA XTAB1_20,X ?L1 RTS ;------------------------------ ;*** <= *** KL_GL_FUN JSR L0771 BCC EINS_FUN BEQ EINS_FUN BCS NULL_FUN ;------------------------------ ;*** <> *** KL_GR_FUN JSR L0771 BEQ NULL_FUN BNE EINS_FUN ;------------------------------ ;*** < *** KLEIN_FUN JSR L0771 BCC EINS_FUN BCS NULL_FUN ;------------------------------ ;*** > *** GR_FUN JSR L0771 BCC NULL_FUN BEQ NULL_FUN BCS EINS_FUN ;------------------------------ ;*** >= *** GR_GL_FUN JSR L0771 BCC NULL_FUN BCS EINS_FUN ;------------------------------ ;*** = *** GL_FUN JSR L0771 BEQ EINS_FUN BNE NULL_FUN ;------------------------------ ;*** AND *** AND_FUN DEC ARSLVL LDX ARSLVL DEC ARSLVL LDA XTAB1_20,X AND XTAB1_21,X ASL BEQ NULL_FUN BNE EINS_FUN ;------------------------------ ;*** OR *** OR_FUN DEC ARSLVL LDX ARSLVL DEC ARSLVL LDA XTAB1_20,X ORA XTAB1_21,X ASL BEQ NULL_FUN BNE EINS_FUN ;------------------------------ ;*** NOT *** NOT_FUN LDX ARSLVL DEC ARSLVL LDA XTAB1_20,X BEQ EINS_FUN ;------------------------------ ;*** %0 *** NULL_FUN LDA #$00 TAY BEQ L0774 ;------------------------------ ;*** %2 + %3 *** DREI_FUN LDY #$03 .BY $2C ZWEI_FUN LDY #$02 LDA #$40 BNE L0774 ;------------------------------ ;*** %1 *** EINS_FUN LDA #$40 L0775 LDY #$01 L0774 INC ARSLVL LDX ARSLVL STA XTAB1_20,X TYA STA XTAB1_40,X LDA #$00 STA XTAB3,X STA XTAB1_60,X STA XTAB1_80,X STA XTAB1_A0,X STA XTAB1_C0,X RTS ;------------------------------ ;*** SGN *** SGN_FUN LDX ARSLVL DEC ARSLVL LDA XTAB1_20,X ASL BEQ NULL_FUN LDA #$80 ROR BNE L0775 ;------------------------------ L0771 LDY OPSTKX LDA L0776,Y CMP #$2F BCC ?L1 JMP L0778 ?L1 LDY ARSLVL DEC ARSLVL LDX ARSLVL DEC ARSLVL LDA XTAB1_20,X CMP XTAB1_20,Y BNE ?L4 ASL BCC ?L2 INX DEY ?L2 LDA XTAB1_40,X CMP XTAB1_40,Y BNE ?L3 LDA XTAB1_60,X CMP XTAB1_60,Y BNE ?L3 LDA XTAB1_80,X CMP XTAB1_80,Y BNE ?L3 LDA XTAB1_A0,X CMP XTAB1_A0,Y BNE ?L3 LDA XTAB1_C0,X CMP XTAB1_C0,Y ?L3 RTS ?L4 ORA XTAB1_20,Y BPL ?L3 ROR EOR #$80 ROL RTS L0778 JSR L0632 JSR FR0_TO_FR1 JSR L0632 LDY #$00 ?L6 LDA FR0+2 BNE ?L7 LDA FR0+3 BEQ ?L14 DEC FR0+3 ?L7 DEC FR0+2 TAX ?L14 PHP LDA FR1+2 BNE ?L8 LDA FR1+3 BEQ ?L13 DEC FR1+3 ?L8 DEC FR1+2 PLP BEQ ?L11 LDA (FR0),Y CMP (FR1),Y BNE ?L10 INC FR0 BNE ?L9 INC FR0+1 ?L9 INC FR1 BNE ?L6 INC FR1+1 BNE ?L6 ?L10 BCS ?L12 ?L11 INY CLC ?L12 RTS ?L13 PLP SEC RTS ;------------------------------ ; ENDE PART 7 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 8 ;------------------------------ ; .LI OFF ;------------------------------ ;*** LEN *** LEN_FUN JSR L0632 LDA FR0+2 LDY FR0+3 L0791 STA FR0 STY FR0+1 L0118 JSR L0124 L0792 LDA #$00 STA ZP0D2 STA ZP0D3 JMP L0125 ;------------------------------ ;*** PEEK *** PEEK_FUN JSR L0115 LDY #$00 LDA (FR0),Y JMP L0791 ;------------------------------ ;*** FRE *** FRE_FUN DEC ARSLVL SEC LDA MEMTOP SBC BASMEMTOP TAX LDA MEMTOP+1 SBC BASMEMTOP+1 TAY TXA JMP L0791 ;------------------------------ ;*** VAL *** VAL_FUN JSR L0595 LDA #$00 STA CIX JSR CALL_ASC_FP JSR L0596 BCC L0792 JMP ERROR18_1 ;------------------------------ ;*** ASC *** ASC_FUN JSR L0632 LDY #$00 LDA (FR0),Y JMP L0791 ;------------------------------ ;*** DEC *** DEC_FUN JSR L0595 LDY #$00 STY CIX STY FR0 STY FR0+1 ?L1 JSR L0794 BCC ?L1 JSR L0596 JMP L0118 ;------------------------------ ;*** ADR *** ADR_FUN JSR L0632 JMP L0118 ;------------------------------ ;*** PADDLE *** PADDLE_FUN LDA #$00 BEQ GET_PORTS ;------------------------------ ;*** STICK *** STICK_FUN LDA #$08 BNE GET_PORTS ;------------------------------ ;*** PTRIG *** PTRIG_FUN LDA #$0C BNE GET_PORTS ;------------------------------ ;*** STRIG *** STRIG_FUN LDA #$14 GET_PORTS STA ZP0EC JSR L0115 BNE ERROR3_3 CMP #$08 BCS ERROR3_3 ADC ZP0EC TAX LDA PADDL0,X L0864 LDY #$00 JMP L0791 ERROR3_3 JMP ERROR_3 ;------------------------------ L0803 JSR SET_INBUFF_580 LDY #$00 LDA FR0+1 BEQ ?L1 JSR ?L2 ?L1 LDA FR0 ?L2 PHA LSR LSR LSR LSR JSR ?L3 PLA AND #$0F ?L3 ORA #$30 CMP #$3A BCC ?L4 ADC #$06 ?L4 STA (INBUFF),Y INY RTS ;------------------------------ ;*** HEX$ *** HEX_FUN JSR L0115 JSR L0803 LDA #$80 BNE L0804 ;------------------------------ ;*** STR$ *** STR_FUN JSR L0663 JSR CALL_FP_ASC LDY #$FF ?L1 INY LDA (INBUFF),Y BPL ?L1 AND #$7F STA (INBUFF),Y INY LDA INBUFF BNE L0804 ;------------------------------ ;*** INKEY$ *** INKEY_FUN LDA CH LDY #$00 CMP #$C0 BCS L0807 LDX #$0E ?L1 CMP KEY_TAB,X BEQ L0807 DEX BPL ?L1 JSR GETKEY_1 JMP L0810 ;------------------------------ ;*** CHR$ *** CHR_FUN JSR L0115 LDA FR0 L0810 STA ADR_5C0 LDY #$01 L0807 LDA #ADR_5C0 L0597 STX FR0+1 STA FR0 STY FR0+2 LDA #$00 STA FR0+3 STA ZP0D3 LDA #$83 STA ZP0D2 JMP L0125 ;------------------------------ ;*** RND( + RND *** RND_KL_FUN DEC ARSLVL RND_FUN LDA #$3F STA FR0 LDX #$05 ?L1 LDA RANDOM AND #$F0 CMP #$A0 BCS ?L1 STA FR1 ?L2 LDA RANDOM AND #$0F CMP #$0A BCS ?L2 ORA FR1 STA FR0,X DEX BNE ?L1 JSR L0262 JMP L0792 ;------------------------------ ;*** RAND *** RAND_FUN JSR RND_FUN JSR MULTIPL_FUN JMP INT_FUN ;------------------------------ ;*** ABS *** ABS_FUN LDX ARSLVL LDA XTAB1_20,X AND #$7F STA XTAB1_20,X RTS ;------------------------------ ;*** FRAC *** FRAC_FUN JSR L0663 LDA FR0 AND #$7F SEC SBC #$40 BCC L0817 TAX LDA #$00 CPX #$05 BCC ?L1 LDX #$04 ?L1 STA FR0+1,X DEX BPL ?L1 JSR L0262 JMP L0125 L0817 INC ARSLVL RTS ;------------------------------ ;*** DIV + TRUNC *** DIV_FUN JSR DIVIS_FUN TRUNC_FUN JSR L0663 LDA FR0 AND #$7F SEC SBC #$40 BCC INT_5 TAX LDA #$00 ?L1 CPX #$04 BCS INT_3 STA FR0+2,X INX BCC ?L1 ;------------------------------ ;*** INT *** INT_FUN JSR L0663 LDA FR0 AND #$7F SEC SBC #$40 BCC INT_4 TAX CPX #$04 BCS L0817 LDA #$00 TAY ?L1 ORA FR0+2,X STY FR0+2,X INX CPX #$04 BNE ?L1 BIT FR0 BPL INT_3 TAY BEQ INT_3 INT_2 LDA #$C0 STA FR1 LDY #$01 STY FR1+1 DEY STY FR1+2 STY FR1+3 STY FR1+4 STY FR1+5 JSR L0265 INT_3 JMP L0125 INT_4 ASL FR0 INT_5 JSR CLEAR_FR0 BCC INT_3 BCS INT_2 ;------------------------------ ;*** SIN *** SIN_FUN JSR L0663 JSR L0826 JMP L0827 ;------------------------------ ;*** COS *** COS_FUN JSR L0663 JSR L0828 JMP L0827 ;------------------------------ ;*** ATN *** ATN_FUN JSR L0663 JSR L0829 JMP L0827 ;------------------------------ ;*** LOG *** LOG_FUN JSR L0663 JSR L0830 JMP L0827 ;------------------------------ ;*** CLOG *** CLOG_FUN JSR L0663 JSR L0831 JMP L0827 ;------------------------------ ;*** EXP *** EXP_FUN JSR L0663 JSR L0832 JMP L0827 ;------------------------------ ;*** SQR *** SQR_FUN JSR L0663 JSR L0833 JMP L0827 ;------------------------------ NULL_1 JMP NULL_FUN EINS_1 JMP EINS_FUN POWER_1 LDA FR1 BPL NULL_1 ERROR3_4 JMP ERROR_3 ;------------------------------ ;*** ^ *** POWER_FUN JSR L0768 LDA FR1 BEQ EINS_1 LDA FR0 BEQ POWER_1 BPL POWER_4 AND #$7F STA FR0 LDA FR1 AND #$7F SEC SBC #$40 BCC ERROR3_4 LDX #$04 CMP #$04 BEQ POWER_3 BCS POWER_4 TAX TAY POWER_2 LDA FR1+2,Y BNE ERROR3_4 INY CPY #$04 BNE POWER_2 POWER_3 LDA FR1+1,X LSR BCS POWER_5 POWER_4 CLC POWER_5 LDA #$00 ROR PHA LDA FR1 CMP #$40 BNE POWER_10 LDA FR1+2 ORA FR1+3 ORA FR1+4 ORA FR1+5 BNE POWER_10 LDA FR1+1 AND #$F0 LSR STA ZP0FC LSR LSR ADC ZP0FC STA ZP0FC LDA FR1+1 AND #$0F ADC ZP0FC STA ZP0FC JSR FR0_TO_5E0 LSR ZP0FC BCS POWER_6 JSR FR0_EINS POWER_6 JSR FR0_TO_5E6 LDA ZP0FC BEQ POWER_11 JSR ADR_5E0_FR0 POWER_7 JSR L0311 BCS POWER_8 LSR ZP0FC BCC POWER_7 JSR FR0_TO_5E0 JSR ADR_5E6_FR1 JSR L0287 BCC POWER_6 POWER_8 JMP ERROR_11 POWER_9 JMP ERROR_3 POWER_10 LDA FR1+5 PHA LDA FR1+4 PHA LDA FR1+3 PHA LDA FR1+2 PHA LDA FR1+1 PHA LDA FR1 PHA JSR L0831 BCS POWER_9 PLA STA FR1 PLA STA FR1+1 PLA STA FR1+2 PLA STA FR1+3 PLA STA FR1+4 PLA STA FR1+5 JSR L0287 BCS POWER_8 JSR L0849 BCS POWER_8 POWER_11 PLA BPL POWER_12 ORA FR0 STA FR0 POWER_12 JMP L0125 ;------------------------------ ;*** DEG + RAD *** DEG_CMD LDA #$06 .BY $2C RAD_CMD LDA #$00 STA RADFLG RTS ;------------------------------ L0851 JSR L0115 STA FR1 STY FR1+1 JMP L0115 ;------------------------------ ;*** & *** AND_BIN_FUN JSR L0851 TYA AND FR1+1 TAY LDA FR1 AND FR0 JMP L0791 ;------------------------------ ;*** ! *** OR_BIN_FUN JSR L0851 TYA ORA FR1+1 TAY LDA FR1 ORA FR0 JMP L0791 ;------------------------------ ;*** EXOR *** EXOR_BIN_FUN JSR L0851 TYA EOR FR1+1 TAY LDA FR1 EOR FR0 JMP L0791 ;------------------------------ KEY_TAB .BY $9A,$98,$9D,$9B,$B3,$B5,$B0,$B2 .BY $A6,$3C,$7C,$BC,$27,$67,$A7 ;------------------------------ ;*** PAUSE *** PAUSE_CMD JSR L0543 ?L1 LDA RTCLOK+2 ?L2 LDY BRKKEY BEQ ?L4 CMP RTCLOK+2 BEQ ?L2 LDA FR0 BNE ?L3 DEC FR0+1 BMI ?L4 ?L3 DEC FR0 JMP ?L1 ?L4 RTS ;------------------------------ MOD_1 LDX ARSLVL DEX INC ARSLVL INC ARSLVL CLC ?L2 LDA XTAB3,X STA XTAB3+2,X LDA XTAB3+1,X STA XTAB3+3,X TXA ADC #$20 TAX BCC ?L2 RTS ;------------------------------ ;*** MOD *** MOD_FUN JSR MOD_1 JSR DIV_FUN JSR MULTIPL_FUN JMP SUBTR_FUN ;------------------------------ ;*** ERR *** ERR_FUN LDA ERRSAV JMP L0864 ;------------------------------ ;*** ERL *** ERL_FUN LDA STOPLN LDY STOPLN+1 JMP L0791 ;------------------------------ ;*** PRINT + ? *** PRINT_1 INC PRINT_TAB PRINT_CMD LDA PRINT_TAB BEQ PRINT_1 STA ZP0AF LDA #$00 STA ZP094 PRINT_2 LDY STATE_NDX LDA (STMCUR),Y CMP #$12 BEQ ?L4 CMP #$16 BEQ PRINT_8 CMP #$14 BEQ PRINT_8 CMP #$15 BEQ PRINT_7 CMP #$1C BEQ ?L6 JSR LET_CMD DEC STATE_NDX LDX ARSLVL LDA XTAB3,X BMI ?L3 JSR STR_FUN ?L3 JSR L0632 LDX ZP0B5 JSR L0555 LDA FR0 STA ICBAL,X LDA FR0+1 STA ICBAH,X LDA FR0+2 STA ICBLL,X CLC ADC ZP094 STA ZP094 LDA FR0+3 STA ICBLH,X ORA FR0+2 BEQ PRINT_2 LDA #$0B JSR L0546 JMP PRINT_2 ?L4 LDY ZP094 INY CPY ZP0AF BCC ?L5 CLC LDA PRINT_TAB ADC ZP0AF STA ZP0AF BCC ?L4 ?L5 LDY ZP094 CPY ZP0AF BCS PRINT_7 JSR L0510 INC ZP094 JMP ?L5 ?L6 JSR L0614 STA ZP0B5 DEC STATE_NDX JMP PRINT_2 L0614 INC STATE_NDX JMP L0543 PRINT_7 INC STATE_NDX JMP PRINT_2 PRINT_8 LDY STATE_NDX DEY LDA (STMCUR),Y CMP #$15 BEQ ?L9 CMP #$12 BEQ ?L9 JSR WRITE_EOL ?L9 LDA #$00 STA ZP0B5 RTS ;------------------------------ ;*** LPRINT *** LPRINT_CMD LDA #PRINTER_NAME STA INBUFF+1 DEC ZP0DB LDX #$07 STX ZP0B5 LDA #$00 LDY #$08 JSR OPENIOCB JSR IO_STATUS JSR PRINT_CMD JMP IO_CLOSE ;------------------------------ ; ENDE PART 8 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 9 ;------------------------------ ; .LI OFF ;------------------------------ ;*** UINSTR + INSTR *** UINSTR_FUN LDA #$5F .BY $2C INSTR_FUN LDA #$FF STA ZP0DF LDY ZP0B0 DEY TYA BEQ ?L1 JSR L0115 ?L1 STA ZP0DA STY ZP0DB JSR L0632 JSR FR0_TO_FR1 JSR L0632 CLC LDA FR0 ADC ZP0DA STA FR0 LDA FR0+1 ADC ZP0DB STA FR0+1 BCS NULL_2 SEC LDA FR0+2 SBC ZP0DA STA FR0+2 LDA FR0+3 SBC ZP0DB STA FR0+3 BCC NULL_2 ORA FR0+2 BEQ NULL_2 SEC LDA FR0+2 SBC FR1+2 STA ZP0DC LDA FR0+3 SBC FR1+3 STA ZP0DD BCS INSTR_2 NULL_2 JMP NULL_FUN INSTR_2 INC ZP0DA BNE ?L3 INC ZP0DB ?L3 LDY #$00 LDA (FR1),Y EOR (FR0),Y AND ZP0DF BNE ?L6 LDA FR0 STA FR0+4 LDA FR0+1 STA FR0+5 LDA FR1 STA FR1+4 LDA FR1+1 STA FR1+5 LDA FR1+3 STA ZP0DE LDX FR1+2 INX ?L4 DEX BNE ?L5 DEC ZP0DE BMI ?L9 ?L5 LDA (FR0+4),Y EOR (FR1+4),Y AND ZP0DF BNE ?L6 INY BNE ?L4 INC FR0+5 INC FR1+5 JMP ?L4 ?L6 INC FR0 BNE ?L7 INC FR0+1 ?L7 LDA ZP0DC BNE ?L8 DEC ZP0DD BMI NULL_2 ?L8 DEC ZP0DC JMP INSTR_2 ?L9 LDA ZP0DA LDY ZP0DB JMP L0791 ;------------------------------ CIRCLE_4 STA FR0+2 STA FR0+3 LDY #$08 ?L5 ASL ZP0E6,X ROL FR1+5,X ROL FR0+2 BCC ?L6 CLC LDA ZP0E6,X ADC FR0+3 STA ZP0E6,X BCC ?L6 INC FR1+5,X ?L6 DEY BNE ?L5 RTS ;------------------------------ ERROR3_5 JMP ERROR_3 ;------------------------------ ;*** CIRCLE *** CIRCLE_CMD JSR L0399 BNE ERROR3_5 PHA LDY STATE_NDX INY CPY STATE_LEN BCS ?L1 JSR L0543 BNE ERROR3_5 ?L1 PLA BNE ?L2 LDA #$01 ?L2 STA FR0+1 LDX #$16 LDA #$00 ?L3 STA FR0+2,X DEX BPL ?L3 LDA FR0+1 STA FR1 INX JSR CIRCLE_4 LDA FR0 LDX #$02 JSR CIRCLE_4 LDA FR0+1 STA FR0+2 LDY #$08 ?L7 ASL ZP0DC ROL ZP0DB ROL ZP0DA ASL FR0+2 BCC ?L8 CLC LDA ZP0DC ADC ZP0E8 STA ZP0DC LDA ZP0DB ADC ZP0E7 STA ZP0DB BCC ?L8 INC ZP0DA ?L8 DEY BNE ?L7 CIRCLE_9 JSR CIRCLE_15 JSR CIRCLE_17 JSR CIRCLE_15 JSR CIRCLE_19 JSR CIRCLE_16 JSR CIRCLE_17 JSR CIRCLE_16 JSR CIRCLE_19 BIT FR1+2 BMI ?L12 INC FR1+1 CLC LDA ZP0EB ADC ZP0E6 STA ZP0EB LDA ZP0EA ADC FR1+5 STA ZP0EA BCC ?L10 INC ZP0E9 ?L10 SEC LDX #$02 ?L11 LDA FR1+2,X SBC ZP0E9,X STA FR1+2,X DEX BPL ?L11 BMI CIRCLE_9 ?L12 LDA FR1 BEQ CRS_HOME DEC FR1 SEC LDA ZP0DC SBC ZP0E8 STA ZP0DC LDA ZP0DB SBC ZP0E7 STA ZP0DB BCS ?L13 DEC ZP0DA ?L13 CLC LDX #$02 ?L14 LDA FR1+2,X ADC ZP0DA,X STA FR1+2,X DEX BPL ?L14 BMI CIRCLE_9 CIRCLE_15 CLC LDA ZP099 ADC FR1 STA COLCRS LDA ZP09A ADC #$00 STA COLCRS+1 RTS CRS_HOME LDX #$00 STX ROWCRS STX COLCRS STX COLCRS+1 RTS CIRCLE_16 SEC LDA ZP099 SBC FR1 STA COLCRS LDA ZP09A SBC #$00 STA COLCRS+1 RTS CIRCLE_17 CLC LDA ZP09B ADC FR1+1 STA ROWCRS LDA ZP09C ADC #$00 BEQ CIRCLE_20 CIRCLE_18 RTS CIRCLE_19 SEC LDA ZP09B SBC FR1+1 STA ROWCRS LDA ZP09C SBC #$00 BNE CIRCLE_18 CIRCLE_20 LDY BAS_COLOR LDX #$60 JSR PUTBYTE CPY #$80 BNE CIRCLE_18 JMP L0641 ;------------------------------ L1014 STY ZP096 LDX #$00 STX ZP0AF L0923 STA ZP095 LDX CIX LDY #$00 LDA (ZP095),Y BEQ L0916 ?L2 LDA ADR_580,X AND #$7F INX EOR (ZP095),Y BNE ?L3 INY BNE ?L2 ?L3 ASL BEQ L0919 BCS L0920 ?L4 INY LDA (ZP095),Y BPL ?L4 Y1007 SEC L0920 INC ZP0AF BEQ ERROR4_1 TYA ADC ZP095 BCC L0923 INC ZP096 BCS L0923 L0919 CLC RTS L0916 SEC RTS ;------------------------------ ERROR4_1 LDA #$04 JMP ERROR_ROUT ;------------------------------ L0963 LDX #$00 STX ZP0AF STY ZP096 ?L1 STA ZP095 LDX CIX LDY #$01 LDA (ZP095),Y BEQ L0916 ?L2 LDA ADR_580,X AND #$7F INX CMP #$2E BEQ L0919 EOR (ZP095),Y BNE ?L3 INY BNE ?L2 ?L3 ASL BEQ L0919 BCS ?L5 ?L4 INY LDA (ZP095),Y BPL ?L4 ?L5 INC ZP0AF SEC TYA ADC ZP095 BCC ?L1 INC ZP096 BCS ?L1 ;------------------------------ ORG OS_RAM_E4 ;------------------------------ ;*** LET *** LET_CMD LDY #$00 LDA #$11 STA L0758 STY OPSTKX STY ZP0B0 STY ARSLVL STY ZP0B1 LET_1 JSR Y0189 BCS ?L2 JSR L0125 JMP LET_1 ?L2 STA EXSVOP TAX LDA L0441,X STA TVSCIX LET_3 LDY OPSTKX LDX L0758,Y LDA L0931,X CMP TVSCIX BCC LET_5 TAX BEQ LET_6 LET_4 LDA L0758,Y DEC OPSTKX JSR JUMP_FUNK_TAB JMP LET_3 LET_5 LDA EXSVOP INY STA L0758,Y STY OPSTKX JMP LET_1 LET_6 RTS ;------------------------------ JUMP_FUNK_TAB ASL STA FTABPTR+1 FTABPTR JMP (FUNCTION_TAB-$B) ;------------------------------ Y0189 LDY STATE_NDX INC STATE_NDX LDA (STMCUR),Y BMI L0933 BEQ L0934 CMP #$0F BCC FP_RAM_FR0 BEQ L0746 RTS ;------------------------------ FP_RAM_FR0 INY LDA (STMCUR),Y STA FR0 INY LDA (STMCUR),Y STA FR0+1 INY LDA (STMCUR),Y STA FR0+2 INY LDA (STMCUR),Y STA FR0+3 INY LDA (STMCUR),Y STA FR0+4 INY LDA (STMCUR),Y STA FR0+5 INY STY STATE_NDX LDA #$00 STA ZP0D2 RTS ;------------------------------ L0746 INY LDA (STMCUR),Y LDX #$8A L0761 STA FR0+2 STA FR0+4 INY TYA CLC ADC LINZBS,X STA FR0 LDA #$00 STA FR0+3 STA FR0+5 ADC LINZBS+1,X STA FR0+1 TYA ADC FR0+2 TAY LDA #$83 STA ZP0D2 STY STATE_NDX CLC RTS ;------------------------------ L0934 INY INC STATE_NDX LDA (STMCUR),Y L0933 EOR #$80 FP_VVTP_FR0 STA ZP0D3 JSR CALC_VARTAB LDA (ZP09D),Y STA ZP0D2 LDY #$02 LDA (ZP09D),Y STA FR0 INY LDA (ZP09D),Y STA FR0+1 INY LDA (ZP09D),Y STA FR0+2 INY LDA (ZP09D),Y STA FR0+3 INY LDA (ZP09D),Y STA FR0+4 INY LDA (ZP09D),Y STA FR0+5 RTS ;------------------------------ L0632 JSR L0663 L0686 LDA #$02 BIT ZP0D2 BNE L0935 ORA ZP0D2 STA ZP0D2 LSR BCC ERROR_9 CLC LDA FR0 ADC STARP STA FR0 TAY LDA FR0+1 ADC STARP+1 STA FR0+1 L0935 RTS L0490 JSR L0543 BPL L0935 LDA #$07 JMP ERROR_ROUT L0399 JSR L0543 STA ZP099 STY ZP09A L0119 JSR L0543 STA ZP09B STY ZP09C L0543 JSR LET_CMD L0115 JSR L0663 JSR L0431 BCS ERROR_3 LDA FR0 LDY FR0+1 RTS L0540 JSR L0543 BEQ L0935 ERROR_3 LDA #$03 .BY $2C ERROR_9 LDA #$09 .BY $2C ERROR_11 LDA #$0B .BY $2C ERROR_10 LDA #$0A JMP ERROR_ROUT ;------------------------------ L0769 BCS ERROR_11 L0827 BCS ERROR_3 L0125 INC ARSLVL LDY ARSLVL CPY #$20 BCS ERROR_10 LDA FR0+5 STA XTAB1_C0,Y LDA FR0+4 STA XTAB1_A0,Y LDA FR0+3 STA XTAB1_80,Y LDA FR0+2 STA XTAB1_60,Y LDA FR0+1 STA XTAB1_40,Y LDA FR0 STA XTAB1_20,Y LDA ZP0D3 STA XTAB1,Y LDA ZP0D2 STA XTAB3,Y RTS L0644 JSR LET_CMD L0663 LDY ARSLVL L0940 DEC ARSLVL LDA XTAB1_C0,Y STA FR0+5 LDA XTAB1_A0,Y STA FR0+4 LDA XTAB1_80,Y STA FR0+3 LDA XTAB1_60,Y STA FR0+2 LDA XTAB1_40,Y STA FR0+1 LDA XTAB1_20,Y STA FR0 LDA XTAB1,Y STA ZP0D3 LDA XTAB3,Y STA ZP0D2 RTS L0768 DEC ARSLVL LDY ARSLVL LDA XTAB1_C1,Y STA FR1+5 LDA XTAB1_A1,Y STA FR1+4 LDA XTAB1_81,Y STA FR1+3 LDA XTAB1_61,Y STA FR1+2 LDA XTAB1_41,Y STA FR1+1 LDA XTAB1_21,Y STA FR1 JMP L0940 L0625 LDA ZP0D3 JSR CALC_VARTAB LDA ZP0D2 STA (ZP09D),Y INY LDA ZP0D3 STA (ZP09D),Y INY LDA FR0 STA (ZP09D),Y INY LDA FR0+1 STA (ZP09D),Y INY LDA FR0+2 STA (ZP09D),Y INY LDA FR0+3 STA (ZP09D),Y INY LDA FR0+4 STA (ZP09D),Y INY LDA FR0+5 STA (ZP09D),Y RTS ;------------------------------ CALC_VARTAB ASL ROL ROL ROL TAY ROR AND #$F8 CLC ADC VVTP STA ZP09D TYA AND #$07 ADC VVTP+1 STA ZP09E LDY #$00 RTS ;------------------------------ NEW_BAS_PTR LDA #$00 STA MEOLFLG STA PROG_CLR LDA MEMLO LDY MEMLO+1 STA BAS_LOMEM STY BAS_LOMEM+1 INY STA VNTP STY VNTP+1 STA VNTD STY VNTD+1 CLC ADC #$01 BCC ?L1 INY ?L1 STA VVTP STY VVTP+1 STA STMTAB STY STMTAB+1 STA STMCUR STY STMCUR+1 CLC ADC #$03 BCC ?L2 INY ?L2 STA STARP STY STARP+1 STA RUNSTK STY RUNSTK+1 STA BASMEMTOP STY BASMEMTOP+1 STA APPMHI STY APPMHI+1 LDA #$00 TAY STA (VNTD),Y STA (STMCUR),Y INY LDA #$80 STA (STMCUR),Y INY LDA #$03 STA (STMCUR),Y LDA #$0A STA PRINT_TAB JMP TRACE_OFF ;------------------------------ ; ENDE PART 9 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 10 ;------------------------------ ; .LI OFF ;------------------------------ L0031 LDX #$FF TXS CLD LDA PROG_CLR BEQ L0948 ;------------------------------ ;*** NEW *** NEW_CMD JSR NEW_BAS_PTR L0948 JSR CLR_DIV_PTR L0579 JSR IO_CL_ALL L0623 JSR L0620 LDA MEOLFLG BEQ L0950 JSR L0596 L0950 JSR PRINT_READY Y1182 JSR L0489 L0561 LDA PROG_CLR BNE NEW_CMD LDX #$FF TXS CLD JSR SET_INBUFF_580 LDA #$5D STA ZP0C2 JSR L0552 LDA BRKKEY BNE L0953 DEC BRKKEY BNE L0561 L0953 LDY #$00 STY CIX STY LLNGTH STY ZP094 STY ZP0A6 STY ZP0B3 STY ZP0B0 STY ZP0B1 LDA VNTD STA EXSVPR LDA VNTD+1 STA ZP0AE JSR L0957 JSR L0958 JSR L0959 LDA FR0+1 BPL L0960 STA ZP0A6 L0960 JSR L0957 STY STATE_NDX LDA (INBUFF),Y CMP #$9B BNE L0961 BIT ZP0A6 BMI L0561 JMP L0962 ;------------------------------ L0961 LDA ZP094 STA STATE_LEN JSR L0959 JSR L0957 LDY #>COMMAND_LIST_0 LDA #COMMAND_LIST_X LDA #COMMAND_LIST_1 STA ZP096 LDA #$15 LDX ZP0DA L0965 STX CIX JSR L0959 JSR CALL_ASC_SUCH JSR L0968 BCC L0969 LDY LLNGTH LDA (INBUFF),Y CMP #$9B BNE L0970 INY STA (INBUFF),Y DEY LDA #$20 L0970 ORA #$80 STA (INBUFF),Y LDA #$40 ORA ZP0A6 STA ZP0A6 LDY STATE_NDX STY CIX LDX #$03 STX STATE_LEN INX STX ZP094 LDA #$37 L0971 JSR L0959 L1012 LDY CIX LDA (INBUFF),Y INC CIX CMP #$9B BNE L0971 JSR L0959 L0969 LDA ZP094 LDY STATE_LEN STA XTAB3,Y LDY CIX DEY LDA (INBUFF),Y CMP #$9B BEQ L0972 JMP L0961 L0972 LDY #$02 LDA ZP094 STA XTAB3,Y JSR L0467 LDA #$00 BCS L0973 LDY #$02 LDA (STMCUR),Y L0973 SEC SBC ZP094 BEQ L0974 BCS L0975 EOR #$FF TAY INY LDX #$8A JSR L0468 LDA ZP097 STA STMCUR LDA ZP098 STA STMCUR+1 BNE L0974 L0975 TAY CLC ADC STMCUR STA STMCUR BCC L0976 INC STMCUR+1 L0976 LDX #$8A JSR L0495 L0974 LDY ZP094 L0977 DEY LDA XTAB3,Y STA (STMCUR),Y TYA BNE L0977 BIT ZP0A6 BVC L0978 LDA ZP0B1 ASL ASL ASL TAY LDX #$88 JSR L0495 SEC LDA VNTD SBC EXSVPR TAY LDA VNTD+1 SBC ZP0AE LDX #$84 JSR L0979 BIT ZP0A6 BPL L0980 JSR L0981 JMP L0561 L0980 JSR L0982 L0983 JMP L0561 L0978 BPL L0983 L0095 JSR L0497 JMP L0984 L0962 JSR L0467 BCS L0983 LDY #$02 LDA (STMCUR),Y TAY CLC ADC STMCUR STA STMCUR BCC L0985 INC STMCUR+1 L0985 LDX #$8A JSR L0495 JMP L0561 L0958 JSR CALL_ASC_FP BCC ?L2 ?L1 LDA #$00 STA CIX LDY #$80 BMI ?L3 ?L2 JSR L0431 BCS ?L1 LDY FR0+1 BMI ?L1 LDA FR0 ?L3 STY ZP0A1 STA ZP0A0 JSR L0959 LDA ZP0A1 STA FR0+1 JMP L0959 L0968 LDY #$00 STY OPSTKX LDA (ZP095),Y ASL TAY LDA L0989,Y STA ZP09D STA ADR_482 LDA L0991,Y STA ZP09E STA ADR_483 LDA ZP094 STA ADR_481 LDA CIX STA ADR_480 L0999 INC ZP09D BNE L0995 INC ZP09E L0995 LDX #$00 LDA (ZP09D,X) BMI L0996 CMP #$05 BCC L0997 JSR L0998 BCC L0999 JMP L1000 L0996 ASL TAY LDA L0991,Y PHA LDA L0989,Y PHA CPY #$12 BCS ?L2 PLA TAY PLA JSR ?L1 BCC L0999 JMP L1000 ?L1 PHA TYA PHA RTS ?L2 LDX OPSTKX INX INX INX INX BEQ ?L3 STX OPSTKX LDA CIX STA ADR_480,X LDA ZP094 STA ADR_481,X LDA ZP09D STA ADR_482,X LDA ZP09E STA ADR_483,X PLA STA ZP09D PLA STA ZP09E JMP L0999 ?L3 JMP ERROR14_1 L0997 LDX OPSTKX BNE ?L1 RTS ?L1 LDA ADR_482,X STA ZP09D LDA ADR_483,X STA ZP09E DEX DEX DEX DEX STX OPSTKX BCS L1000 JMP L0999 L1000 INC ZP09D BNE L1006 INC ZP09E L1006 LDX #$00 LDA (ZP09D,X) BMI L1000 CMP #$03 BEQ L0997 BCS L1000 LDA CIX CMP LLNGTH BCC L1007 STA LLNGTH L1007 LDX OPSTKX LDA ADR_480,X STA CIX LDA ADR_481,X STA ZP094 JMP L0999 L1010 RTS L0998 CMP #$0F BNE L1008 INC ZP09D BNE L1009 INC ZP09E L1009 LDX #$00 LDA (ZP09D,X) CLC DEC ZP094 L0959 LDY ZP094 STA XTAB3,Y INC ZP094 BNE L1010 ;------------------------------ ERROR14_1 LDA #$0E JMP ERROR_ROUT ;------------------------------ Y1281 LDX #$FF TXS LDA ZP094 LDY STATE_LEN STA XTAB3,Y JMP L0961 Y1277 LDX #$FF TXS LDY #$04 LDA XTAB3,Y CMP #$54 BNE L1011 LDY CIX DEY LDA #$9B STA (INBUFF),Y JMP L0969 L1011 JMP L1012 L1008 JSR L0957 CPY ZP0B3 BEQ L1013 STY ZP0B3 LDY #>FUNCTION_LIST LDA #',$BD .BYTE $BC .BYTE $BE .BYTE $BD .BYTE $DE .BYTE $AA .BYTE $AB .BYTE $AD .BYTE $AF .BYTE 'NO',$D4 .BYTE 'O',$D2 .BYTE 'AN',$C4 .BYTE $A8 .BYTE $A9 .BYTE $BD .BYTE $BD .BYTE '<',$BD .BYTE '<',$BE .BYTE '>',$BD .BYTE $BC .BYTE $BE .BYTE $BD .BYTE $AB .BYTE $AD .BYTE $A8 .BY $80,$80 .BYTE $A8,$A8,$AC .BYTE 'STR',$A4 .BYTE 'CHR',$A4 .BYTE 'US',$D2 .BYTE 'AS',$C3 .BYTE 'VA',$CC .BYTE 'LE',$CE .BYTE 'AD',$D2 .BYTE 'AT',$CE .BYTE 'CO',$D3 .BYTE 'PEE',$CB .BYTE 'SI',$CE .BYTE 'RN',$C4 .BYTE 'FR',$C5 .BYTE 'EX',$D0 .BYTE 'LO',$C7 .BYTE 'CLO',$C7 .BYTE 'SQ',$D2 .BYTE 'SG',$CE .BYTE 'AB',$D3 .BYTE 'IN',$D4 .BYTE 'PADDL',$C5 .BYTE 'STIC',$CB .BYTE 'PTRI',$C7 .BYTE 'STRI',$C7 ;*** TURBO BASIC FUNCTION SET *** .BYTE 'DPEE',$CB .BYTE $A6 .BYTE $A1 .BYTE 'INST',$D2 .BYTE 'INKEY',$A4 .BYTE 'EXO',$D2 .BYTE 'HEX',$A4 .BYTE 'DE',$C3 .BYTE 'DI',$D6 .BYTE 'FRA',$C3 .BYTE 'TIME',$A4 .BYTE 'TIM',$C5 .BYTE 'MO',$C4 .BYTE 'EXE',$C3 .BYTE 'RN',$C4 .BYTE 'RAN',$C4 .BYTE 'TRUN',$C3 .BYTE '%',$B0 .BYTE '%',$B1 .BYTE '%',$B2 .BYTE '%',$B3 .BYTE 'GO',$A3 .BYTE 'UINST',$D2 .BYTE 'ER',$D2 .BYTE 'ER',$CC ;------------------------------ Y1286 .BY $00,$2B,$8C,$2C,$8B,$02,$89,$8C .BY $02,$8A,$8B Y1287 .BY $03,$25,$0F,$35,$02,$26,$0F,$36 .BY $02,$28 Y1288 .BY $03,$B0,$02,$8D,$02,$81,$02,$B4 Y1289 .BY $03,$88,$8C,$02 Y1290 .BY $03,$82,$8E Y1291 .BY $03,$2B,$0F,$38,$8C,$8F,$2C,$02 Y1292 .BY $03,$12,$0F,$3C,$8C,$02 Y1293 .BY $03,$58,$BA,$02,$6B,$BA,$02,$60 .BY $02,$66,$02,$67,$02,$68,$02,$69 .BY $02,$6C,$02,$6D,$02,$B1,$02,$5E .BY $B2,$02,$64,$B2,$02,$65,$B2,$02 .BY $44,$B2,$02,$D1,$B3,$02,$48,$0F,$63 Y1294 .BY $03,$3F,$D0,$D3,$2C Y1295 .BY $03,$D0,$8C,$2C Y1296 .BY $03,$D0,$B5,$2C Y1297 .BY $03,$B5,$BB,$B5 Y1298 .BY $03,$59,$02,$5F,$02,$B6,$02,$B7 .BY $02,$83 Y1299 .BY $03,$D2,$B2 Y1300 .BY $03,$85,$B9 Y1301 .BY $03,$2B,$0F,$37,$8C,$8F,$2C,$02 Y1302 .BY $03,$1D,$0F,$2F,$02,$1E,$0F,$30 .BY $02,$1F,$0F,$31,$02,$20,$0F,$32 .BY $02,$21,$0F,$33,$02,$22,$0F,$34 Y1303 .BY $03,$C0,$C6,$90 Y1304 .BY $03,$8C,$90 Y1305 .BY $03,$8D,$22,$0F,$2D,$8C,$90,$02 .BY $B7,$22,$0F,$2E,$B5,$90 Y1306 .BY $03,$82,$22,$0F,$2D,$8C,$19,$8C .BY $BC,$90 Y1307 .BY $03,$1A,$8C,$02 Y1308 .BY $03,$C4,$12,$97 Y1309 .BY $03,$C4,$12,$AF,$90 Y1310 .BY $03,$BE Y1311 .BY $D8,$82,$90 Y1312 .BY $03,$90 Y1313 .BY $02,$91,$02,$1C,$B8 Y1314 .BY $03 Y1315 .BY $D9,$BF,$D6,$90 Y1316 .BY $03,$14,$02,$16 Y1317 .BY $03,$BE,$90,$02 Y1318 .BY $C0,$CB,$90 Y1319 .BY $03,$1C,$8C Y1320 .BY $03,$82,$02,$85 Y1321 .BY $03,$BF,$D6,$02 Y1322 .BY $03,$12,$D5,$02 Y1323 .BY $03,$8C Y1324 .BY $12,$BE,$12,$C4 Y1325 .BY $12,$B5,$90 Y1326 .BY $03,$BE,$90,$02,$90 Y1327 .BY $03,$96,$02,$90 Y1328 .BY $03,$BE,$D8,$02 Y1329 .BY $03,$BE,$D8,$02,$83,$D8,$02 Y1330 .BY $03,$C1,$91,$02,$C1,$92,$02,$C1 .BY $8C,$12,$90 Y1331 .BY $02,$96,$02,$90 Y1332 .BY $03,$B5,$12,$02 Y1333 .BY $03,$BE,$12,$82,$12,$97 Y1334 .BY $03,$8C,$12,$8C Y1335 .BY $03,$90,$02,$8C Y1336 .BY $12,$8C Y1337 .BY $12,$C4,$90 Y1338 .BY $03,$C8,$D7,$90 Y1339 .BY $03,$8C,$C5,$90 Y1340 .BY $03,$86,$C3 Y1341 .BY $03,$12,$C2,$02 Y1342 .BY $03,$17,$C6,$02,$18,$C6,$02,$62 .BY $C2,$02,$6A,$C2 Y1343 .BY $03,$8C,$C7 Y1344 .BY $03,$12,$C6,$02 Y1345 .BY $03,$82,$2B,$0F,$39,$8C,$8F,$2C .BY $02,$85,$2B,$0F,$3B,$8C,$2C Y1346 .BY $03,$C8,$D7,$02 Y1347 .BY $03,$12,$C9,$02 Y1348 .BY $03,$8C,$1B,$CA,$90,$02,$8C,$90 Y1349 .BY $03,$81,$02 Y1350 .BY $84,$AE,$02,$CD,$AD,$02 Y1351 .BY $03,$AE,$02 Y1352 .BY $03,$AF,$CC Y1353 .BY $03,$8C,$02,$B5 Y1354 .BY $03,$CD,$AD,$02 Y1355 .BY $03,$D8,$CE Y1356 .BY $03,$CD,$02 Y1357 .BY $03,$12,$02,$15 Y1358 .BY $03,$40,$02,$41,$02,$42,$02,$43 .BY $02,$5C Y1359 .BY $03,$3D,$02,$3E,$02,$5B Y1360 .BY $03,$8C,$D4 Y1361 .BY $03,$12,$0F,$3C,$D3,$02 Y1362 .BY $03,$2B,$0F,$3A Y1363 .BY $03,$BE,$12,$92 Y1364 .BY $03 Y1365 .BY $80,$D0,$B5,$12,$0F,$3C,$B5,$8F,$2C Y1366 .BY $03 Y1367 .BY $87,$86,$90 Y1368 .BY $03,$26,$90,$02,$25,$90,$02,$90 Y1369 .BY $03,$8C,$12,$93,$02,$93,$03 ;------------------------------ L0989 .BYTE <[Y1277-1] L0991 .BYTE >[Y1277-1] .WORD Y1278-1 .WORD Y1279-1 .WORD Y1280-1 .WORD Y1281-1 .WORD Y1282-1 .WORD Y1283-1 .WORD Y1284-1 .WORD Y1285-1 ;* .WORD Y1287 .WORD Y1288,Y1289 .WORD Y1286,Y1290 .WORD Y1291,Y1292 .WORD Y1316,Y1304 .WORD Y1337,Y1336 .WORD Y1335,Y1364 .WORD Y1325,Y1311 .WORD Y1314,Y1315 .WORD Y1305,Y1348 .WORD Y1306,Y1330 .WORD Y1338,Y1326 .WORD Y1324,Y1323 .WORD Y1310,Y1333 .WORD Y1339,Y1317 .WORD Y1318,Y1366 .WORD Y1312,Y1327 .WORD Y1368,Y1303 .WORD Y1308,Y1351 .WORD Y1352,Y1353 .WORD Y1293,Y1294 .WORD Y1295,Y1296 .WORD Y1297,Y1298 .WORD Y1299,Y1300 .WORD Y1367,Y1301 .WORD Y1365,Y1302 .WORD Y1307,Y1313 .WORD Y1319,Y1320 .WORD Y1328,Y1332 .WORD Y1340,Y1341 .WORD Y1334,Y1342 .WORD Y1343,Y1344 .WORD Y1345,Y1346 .WORD Y1349,Y1350 .WORD Y1354,Y1355 .WORD Y1356,Y1363 .WORD Y1362,Y1358 .WORD Y1359,Y1360 .WORD Y1361,Y1321 .WORD Y1322,Y1347 .WORD Y1357,Y1329 .WORD Y1331,Y1309 .WORD Y1369 ;------------------------------ Y1285 JSR L1008 LDA ZP0B0 CMP #$1C BCC ?L1 CMP #$28 BEQ ?L1 CMP #$2B BCC ?L2 CMP #$56 BEQ ?L2 CMP #$57 BEQ ?L2 CMP #$5A BEQ ?L2 CMP #$5D BEQ ?L2 CMP #$61 BEQ ?L2 ?L1 SEC RTS ?L2 JMP L1016 ;------------------------------ ; ENDE PART 11 ;------------------------------ ; .LI ON ;------------------------------ ;TURBO-BASIC PART 12 ;------------------------------ ; .LI OFF ;------------------------------ ;*** LIST *** LIST_CMD JSR LOOP_BEGIN LDY #$00 STY ZP0A0 STY ZP0A1 STY ZP0B9 DEY STY EXSVPR LDA #$7F STA ZP0AE STA DSPFLG JSR WRITE_EOL ?L1 LDY STATE_NDX INY CPY STATE_LEN BCS ?L4 LDA STATE_NDX PHA JSR LET_CMD PLA STA STATE_NDX LDA ZP0D2 BPL ?L2 JSR OPENWRITE JMP ?L1 ?L2 JSR L0490 STY ZP0A1 STA ZP0A0 LDX STATE_NDX CPX STATE_LEN BEQ ?L3 LDY #$80 INX CPX STATE_LEN BEQ ?L3 JSR L0490 ?L3 STA EXSVPR STY ZP0AE ?L4 JSR L0402 ?L5 LDY #$01 LDA (STMCUR),Y BMI LIST_9 CMP ZP0AE BCC ?L6 BNE LIST_9 DEY LDA (STMCUR),Y CMP EXSVPR BCC ?L6 BNE LIST_9 ?L6 LDA CONSOL CMP #$07 BEQ ?L7 LDA RTCLOK+2 AND #$0F BNE ?L6 ?L7 JSR L0982 LDA BRKKEY BEQ LIST_8 LDY #$02 LDA (STMCUR),Y CLC ADC STMCUR STA STMCUR BCC ?L5 INC STMCUR+1 BCS ?L5 LIST_8 DEC BRKKEY LIST_9 LDA ZP0B5 BEQ ?L10 JSR IO_CLOSE LDA #$00 STA ZP0B5 ?L10 STA DSPFLG L0422 JSR POP_1 JMP Y1043 SCAN_TOKEN_TABLE STX ARSLVL STA ZP096 STY ZP095 ?L1 LDY ARSLVL LDA ZP0AF BEQ ?L4 DEC ZP0AF ?L2 LDA (ZP095),Y BMI ?L3 INY BNE ?L2 ?L3 INY JSR ?L4 JMP ?L1 ?L4 CLC TYA ADC ZP095 STA ZP095 BCC ?L5 INC ZP096 ?L5 RTS Y1052 LDY #$FF STY ZP0AF ?L1 INC ZP0AF LDY ZP0AF LDA (ZP095),Y PHA CMP #$9B BEQ ?L2 AND #$7F BEQ ?L3 ?L2 JSR WRITE_BYTE ?L3 PLA BPL ?L1 RTS Y1178 JSR L0510 Y1001 JSR Y1052 L0510 LDA #$20 JMP WRITE_BYTE L0982 LDY #$00 LDA (STMCUR),Y TAX INY LDA (STMCUR),Y JSR L0520 LDX LIST_FLAG BEQ ?L2 LDX ZP0B9 LDY #$04 LDA (STMCUR),Y JSR Y1055 BEQ ?L1 CMP #$40 BNE ?L2 ?L1 DEX DEX ?L2 STX FR0 ?L3 JSR L0510 DEC FR0 BPL ?L3 L0981 LDY #$02 LDA (STMCUR),Y STA LLNGTH INY ?L1 LDA (STMCUR),Y STA STATE_LEN INY STY STATE_NDX JSR ?L2 LDY STATE_LEN CPY LLNGTH BCC ?L1 RTS ?L2 JSR Y1060 CMP #$36 BEQ Y1061 CMP #$54 BEQ ?L4 JSR ADJUST_LIST_INDENT JSR Y1060 CMP #$37 BEQ ?L3 CMP #$02 BCS Y1061 ?L3 JSR Y1065 JSR WRITE_BYTE JMP ?L3 ?L4 LDY #$1E LDA LIST_FLAG BNE ?L5 LDY #$02 ?L5 STY FR0 ?L6 LDA #$2D JSR WRITE_BYTE DEC FR0 BNE ?L6 JMP WRITE_EOL Y1061 JSR Y1065 BNE Y1068 JSR Y1065 .BY $2C Y1068 BPL Y1069 EOR #$80 JSR WRITE_VARNAME CMP #$A8 BNE Y1061 JSR Y1065 JMP Y1061 Y1069 CMP #$0F BEQ Y1070 BCS Y1071 PHA JSR FP_RAM_FR0 DEC STATE_NDX PLA CMP #$0D BNE Y1072 LDA #$24 JSR WRITE_BYTE JSR L0431 JSR L0803 ORA #$80 STA ADR_57F,Y BNE Y1073 Y1072 JSR CALL_FP_ASC Y1073 JSR Y1074 JMP Y1061 Y1080 JSR Y1052 JMP Y1061 Y1070 JSR Y1065 STA ZP0AF LDA #$22 JSR WRITE_BYTE LDA ZP0AF BEQ Y1075 Y1077 JSR Y1065 CMP #$22 BNE Y1076 JSR WRITE_BYTE LDA #$22 Y1076 JSR WRITE_BYTE DEC ZP0AF BNE Y1077 Y1075 LDA #$22 JSR WRITE_BYTE JMP Y1061 Y1071 SEC SBC #$10 STA ZP0AF LDX #$00 LDA #>FUNCTION_LIST LDY #COMMAND_LIST_0 LDY #STOP_TEXT STA ZP096 JSR Y1052 JMP PRT_AT_LINE ;------------------------------ STORE_STOPLN LDY #$01 LDA (STMCUR),Y BMI L0620 STA STOPLN+1 DEY LDA (STMCUR),Y STA STOPLN L0620 LDA #$00 STA ZP0B4 STA ZP0B5 RTS ;------------------------------ STOP_TEXT .BYTE 'STOPPED',$A0 ;------------------------------ ;*** CONT *** CONT_CMD LDY #$01 LDA (STMCUR),Y BPL L0620 LDA STOPLN STA ZP0A0 LDA STOPLN+1 STA ZP0A1 JSR L0402 LDY #$02 LDA (STMCUR),Y STA LLNGTH PLA PLA JMP ZEILEN_INC ;------------------------------ ;*** TRAP *** TRAP_CMD JSR L0728 STA TRAPLN STY TRAPLN+1 RTS ;------------------------------ ;*** ON *** ON_CMD STY ZP0B3 JSR L0644 JSR L0431 BCS ?L2 LDA FR0+1 BNE ?L2 LDA FR0 BEQ ?L2 STA ZP0B9 LDY STATE_NDX DEY LDA (STMCUR),Y PHA ?L1 DEC ZP0B9 BEQ ?L3 JSR L0429 CPX #$12 BEQ ?L1 PLA ?L2 RTS ?L3 PLA CMP #$62 BEQ ?L5 CMP #$6A BEQ ?L6 PHA JSR L0490 PLA CMP #$17 BEQ ?L4 LDA #$1E JSR Y1101 ?L4 LDA FR0 LDY FR0+1 JMP Y1136 ?L5 LDA #$51 JSR Y1101 JMP Y1137 ?L6 JMP GO_NR_CMD Y1094 STA ZP0A4 CLC LDA BASMEMTOP STA ZP0C4 ADC ZP0A4 TAY LDA BASMEMTOP+1 STA ZP0C5 ADC #$00 CMP MEMTOP+1 BCC ?L1 BNE ERROR2_2 CPY MEMTOP BCC ?L1 BNE ERROR2_2 ?L1 STA BASMEMTOP+1 STA APPMHI+1 STY BASMEMTOP STY APPMHI RTS ;------------------------------ ERROR2_2 LDA #$02 JMP ERROR_ROUT ;------------------------------ Y1095 LDA FR0 STA (ZP0C4),Y INY LDA FR0+1 STA (ZP0C4),Y INY LDA FR0+2 STA (ZP0C4),Y INY LDA FR0+3 STA (ZP0C4),Y INY LDA FR0+4 STA (ZP0C4),Y INY LDA FR0+5 STA (ZP0C4),Y RTS ;------------------------------ CLR_DIM_PTR LDA STARP STA RUNSTK STA BASMEMTOP STA APPMHI LDA STARP+1 STA RUNSTK+1 STA BASMEMTOP+1 STA APPMHI+1 RTS ;------------------------------ CLR_VAR LDX VVTP STX ZP0F5 LDY VVTP+1 STY ZP0F6 ?L1 LDX ZP0F5 CPX STMTAB LDA ZP0F6 SBC STMTAB+1 BCS ?L3 LDY #$00 LDA (ZP0F5),Y AND #$FC STA (ZP0F5),Y LDY #$02 LDX #$06 LDA #$00 ?L2 STA (ZP0F5),Y INY DEX BNE ?L2 LDA ZP0F5 CLC ADC #$08 STA ZP0F5 LDA ZP0F6 ADC #$00 STA ZP0F6 BNE ?L1 ?L3 JMP L0421 ;------------------------------ CLR_DIV_PTR LDY #$00 STY STOPLN STY STOPLN+1 STY ZP0B9 STY RADFLG STY DATA_PTR STY DATAZ_PTR STY DATAZ_PTR+1 DEY STY TRAPLN+1 STY BRKKEY JMP IO_CL_ALL ;------------------------------ ;*** *F *** FOR_CTRL_CMD LDA (STMCUR),Y EOR #$26 STA FOR_CTRL_FLAG RTS ;------------------------------ FOR_CTRL_FLAG .BY $00 ;------------------------------ Y1103 LDY #$FF Y1126 STX Y1143+1 STA Y1144+1 STY Y1145+1 LDA #$00 STA FR0+3 LDA STMCUR STA ZP0BE LDA STMCUR+1 STA ZP0BF Y1149 LDY STATE_LEN CPY LLNGTH BCS Y1146 LDA (STMCUR),Y STA STATE_LEN INY LDA (STMCUR),Y INY STY STATE_NDX Y1143 CMP #$00 BEQ Y1147 Y1144 CMP #$00 BEQ Y1148 Y1145 CMP #$00 BNE Y1149 LDA FR0+3 BNE Y1149 Y1150 RTS Y1147 LDA FR0+3 BEQ Y1150 DEC FR0+3 JMP Y1149 Y1148 CMP #$07 BNE ?L1 LDY STATE_LEN DEY LDA (STMCUR),Y CMP #$1B BEQ Y1149 ?L1 INC FR0+3 BNE Y1149 Y1106 JSR Y1152 ERROR22_1 LDA #$16 JMP ERROR_ROUT Y1146 LDY #$01 LDA (STMCUR),Y BMI Y1106 CLC LDA LLNGTH ADC STMCUR STA STMCUR BCC ?L1 INC STMCUR+1 ?L1 LDY #$01 LDA (STMCUR),Y BMI Y1106 INY LDA (STMCUR),Y STA LLNGTH INY STY STATE_LEN JMP Y1149 ;------------------------------ ;*** WHILE *** WHILE_CMD JSR LOOP_BEGIN JSR LET_CMD LDX ARSLVL LDA XTAB1_40,X BNE Y1155 JSR POP_1 LDA #$3E LDX #$3F JMP Y1103 ;------------------------------ ;*** UNTIL *** UNTIL_CMD JSR LET_CMD JSR POP_1 BCS ERROR23_1 CMP #$3C BNE ERROR22_1 LDX ARSLVL LDY XTAB1_40,X BNE Y1155 LDA #$04 JSR Y1112 LDA #$3C JMP Y1043 Y1155 RTS ;------------------------------ ;*** WEND *** WEND_CMD JSR POP_1 BCS ERROR24_1 CMP #$3E BNE ERROR22_1 JSR Y1043 LDY ZP0B2 DEY STY STATE_LEN RTS ;------------------------------ ERROR23_1 LDA #$17 .BY $2C ERROR24_1 LDA #$18 JMP ERROR_ROUT ;------------------------------ ;*** POP *** POP_CMD POP_1 LDA RUNSTK+1 CMP BASMEMTOP+1 BCC ?L1 LDA RUNSTK CMP BASMEMTOP BCS ?L5 ?L1 SEC LDA BASMEMTOP SBC #$04 STA BASMEMTOP STA APPMHI BCS ?L2 DEC BASMEMTOP+1 DEC APPMHI+1 ?L2 LDY #$03 LDA (BASMEMTOP),Y STA ZP0B2 DEY LDA (BASMEMTOP),Y STA ZP0A1 DEY LDA (BASMEMTOP),Y STA ZP0A0 DEY LDA (BASMEMTOP),Y BNE ?L4 TAY SEC LDA BASMEMTOP SBC #$0D STA BASMEMTOP STA APPMHI BCS ?L3 DEC BASMEMTOP+1 DEC APPMHI+1 ?L3 TYA ?L4 CLC RTS ?L5 SEC RTS ;------------------------------ ;*** RETURN *** RETURN_CMD JSR POP_1 BCS ERROR16_1 CMP #$0C BEQ Y1043 CMP #$1E BEQ Y1043 CMP #$50 BNE RETURN_CMD BEQ ERROR16_1 Y1043 LDY ZP0B2 CMP (ZP0A0),Y BNE ERROR15_1 LDA ZP0A1 BEQ ERROR15_1 STA STMCUR+1 LDA ZP0A0 STA STMCUR DEY LDA (STMCUR),Y STA STATE_LEN LDY #$02 LDA (STMCUR),Y STA LLNGTH RTS ;------------------------------ ERROR15_1 LDA #$0F .BY $2C ERROR16_1 LDA #$10 .BY $2C ERROR26_1 LDA #$1A JMP ERROR_ROUT ;------------------------------ ;*** EXIT *** EXIT_CMD JSR POP_1 BCS ERROR26_1 BNE ?L1 LDA #$08 ?L1 TAX INX JMP Y1103 Y1169 LDA #$1E BNE Y1043 ;------------------------------ ;*** ENDPROC *** ENDPROC_CMD JSR POP_1 BCS ERROR28_1 CMP #$50 BEQ Y1043 CMP #$51 BEQ Y1169 CMP #$1E BEQ ERROR28_1 CMP #$0C BNE ENDPROC_CMD ERROR29_1 SEC SBC #$A4 .BY $2C ERROR28_1 LDA #$1C JMP ERROR_ROUT ;------------------------------ ;*** EXEC *** EXEC_CMD JSR EXEC_BEGIN Y1137 LDX #$C1 Y1172 LDY STATE_NDX LDA (STMCUR),Y BNE ?L1 INY LDA (STMCUR),Y ?L1 EOR #$80 JSR CALC_VARTAB TXA CMP (ZP09D),Y BNE ERROR29_1 LDY #$03 LDA (ZP09D),Y STA STMCUR+1 DEY LDA (ZP09D),Y STA STMCUR LDA (STMCUR),Y STA LLNGTH INY LDA (STMCUR),Y STA STATE_LEN RTS ;------------------------------ ;*** GO# *** GO_NR_CMD LDX #$C2 BNE Y1172 ;------------------------------ ;*** PROC *** PROC_CMD LDA #$1B .BY $2C ERROR25_1 LDA #$19 JMP ERROR_ROUT ;------------------------------ ;*** LOOP *** LOOP_CMD JSR POP_1 BCS ERROR25_1 CMP #$45 BNE ?L1 LDA #$04 JSR Y1112 LDA #$45 JMP Y1043 ?L1 JMP ERROR22_1 ;------------------------------ ; ENDE PART 13 ;------------------------------ ; .LI ON ;------------------------------ ; TURBO-BASIC PART 14 ;------------------------------ ; .LI OFF ;------------------------------ ERROR19_1 LDA #$13 .BY $2C ERROR18_1 LDA #$12 .BY $2C ;------------------------------ ;*** ERROR *** ERROR_LINE LDA #$11 ERROR_ROUT STA ZP0B9 ERROR_IO LDA #$00 CLD STA DSPFLG JSR STORE_STOPLN LDY TRAPLN+1 BMI ?L1 LDA TRAPLN LDX #$80 STX TRAPLN+1 LDX ZP0B9 STX ERRSAV LDX #$00 STX ZP0B9 JMP Y1136 ?L1 LDA ZP0B9 CMP #$80 BNE ?L2 JMP STOP_CMD ?L2 JSR WRITE_EOL LDA #$37 JSR ADJUST_LIST_INDENT LDX ZP0B9 LDA #$00 JSR L0520 LDA ZP0B9 CMP #$1F BCC ?L3 SBC #$62 ?L3 STA ZP0AF CMP #$4C BCS PRT_AT_LINE LDX #$00 LDA #>ERROR_TEXTS LDY #ERROR_TEXTS JSR Y1180 LDY #$01 LDA (STMCUR),Y STA FR0+1 DEY LDA (STMCUR),Y STA FR0 JSR Y1181 ?L1 JSR WRITE_EOL JSR TRACE_OFF JMP Y1182 ;------------------------------ L0520 STA FR0+1 STX FR0 Y1181 JSR L0124 CALL_FP_ASC1 JSR CALL_FP_ASC Y1074 LDA INBUFF LDY INBUFF+1 Y1180 STA ZP095 STY ZP096 JMP Y1052 ;------------------------------ ;*** ERROR TEXTS *** ERROR_TEXTS .BYTE ' AT LINE',$A0 ;00 00 .BYTE '?BLOA',$C4 ;01 01 .BYTE 'ME',$CD ;02 02 .BYTE 'VALU',$C5 ;03 03 .BYTE '>#VAR',$D3 ;04 04 .BYTE '$LE',$CE ;05 05 .BYTE '?DAT',$C1 ;06 06 .BYTE '>3276',$B7 ;07 07 .BYTE 'INPU',$D4 ;08 08 .BYTE 'DI',$CD ;09 09 .BYTE 'STAC',$CB ;0A 10 .BYTE 'OVERFLO',$D7 ;0B 11 .BYTE '?LIN',$C5 ;0C 12 .BYTE '?FO',$D2 ;0D 13 .BYTE 'TOO LON',$C7 ;0E 14 .BYTE '?DE',$CC ;0F 15 .BYTE '?GOSU',$C2 ;10 16 .BYTE 'GARBAG',$C5 ;11 17 .BYTE '?CH',$D2 ;12 18 .BYTE 'ME',$CD ;13 19 .BYTE $A3 ;14 20 .BYTE '?LOA',$C4 ;15 21 .BYTE '?NES',$D4 ;16 22 .BYTE '?WHIL',$C5 ;17 23 .BYTE '?REPEA',$D4 ;18 24 .BYTE '?D',$CF ;19 25 .BYTE '?EXI',$D4 ;1A 26 .BYTE 'XPRO',$C3 ;1B 27 .BYTE '?EXE',$C3 ;1C 28 .BYTE '?PRO',$C3 ;1D 29 .BYTE '?',$A3 ;1E 30 .BYTE 'IS OPE',$CE ;1F 31 .BYTE '?DE',$D6 ;20 32 .BYTE 'WR ONL',$D9 ;21 33 .BYTE 'CM',$C4 ;22 34 .BYTE 'NOT OPE',$CE ;23 35 .BYTE $A3 ;24 36 .BYTE 'RD ONL',$D9 ;25 37 .BYTE 'EO',$C6 ;26 38 .BYTE 'TRUN',$C3 ;27 39 .BYTE 'TIMEOU',$D4 ;28 40 .BYTE 'NA',$CB ;29 41 .BYTE '!FRAM',$C5 ;2A 42 .BYTE 'CURSO',$D2 ;2B 43 .BYTE '!OVERRU',$CE ;2C 44 .BYTE 'CHKSU',$CD ;2D 45 .BYTE 'DON',$C5 ;2E 46 .BYTE 'MOD',$C5 ;2F 47 .BYTE 'NOT IMP',$CC ;30 48 .BYTE 'RA',$CD ;31 49 .BYTE $A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0,$A0 .BYTE 'D?',$BA ;3D 61 .BYTE '>#FILE',$D3 ;3E 62 .BYTE 'DSK FUL',$CC ;3F 63 .BYTE 'FATAL I/',$CF ;40 64 .BYTE 'FILE',$A3 ;41 65 .BYTE 'NAM',$C5 ;42 66 .BYTE 'POIN',$D4 ;43 67 .BYTE 'LOCKE',$C4 ;44 68 .BYTE 'DCM',$C4 ;45 69 .BYTE '>DI',$D2 ;46 70 .BYTE '?FIL',$C5 ;47 71 .BYTE 'POIN',$D4 ;48 72 .BYTE '?APPN',$C4 ;49 73 .BYTE 'BAD SECTOR',$D3 ;4A 74 ;------------------------------ ;*** TIME *** TIME_FUN LDA RTCLOK+2 LDY RTCLOK+1 LDX RTCLOK CMP RTCLOK+2 BNE TIME_FUN PHA STX FR0+1 STY FR0 JSR L0124 LDX #$05 ?L1 LDA TIME_TAB,X STA FR1,X DEX BPL ?L1 JSR L0287 JSR FR0_TO_FR1 PLA STA FR0 LDA #$00 STA FR0+1 JSR L0124 JSR L0265 LDA #$00 STA ZP0D2 STA ZP0D3 JMP L0125 ;------------------------------ ;*** TIME$ *** TIMES_FUN JSR TIME_FUN DEC ARSLVL LDX #$05 ?L1 LDA TIMES_TAB,X STA FR1,X DEX BPL ?L1 JSR L0317 LDY #$00 LDA FR0 CMP #$40 BNE ?L2 STY FR0+1 ?L2 STY CIX LDA #$24 ;<- Hours JSR ?L3 LDA #$60 ;<- Minues JSR ?L3 LDA #$60 ;<- Seconds JSR ?L3 LDY #$06 LDA #TRACE_PRINT BNE TRACE_STORE TRACE_OFF LDA #$A0 LDX #$02 LDY #$B1 TRACE_STORE STA L0984 STX L0984+1 STY L0984+2 RTS TRACE_PRINT LDA #$5B JSR WRITE_BYTE LDY #$00 LDA (STMCUR),Y TAX INY LDA (STMCUR),Y JSR L0520 LDA #$5D JSR WRITE_BYTE LDY #$02 LDA (STMCUR),Y JMP Y1266 Y1268 JSR PAINT_21 LDA #$0C JMP ERROR_ROUT ;------------------------------ ;*** GOSUB *** GOSUB_CMD JSR EXEC_BEGIN ;------------------------------ ;*** GOTO *** GOTO_CMD JSR L0490 Y1136 STA ZP0A0 STY ZP0A1 JSR L0402 BCS Y1268 PLA PLA LDA BRKKEY BEQ BREAK_KEY L0984 LDY #$02 LDA (STMCUR),Y Y1266 STA LLNGTH INY ?L1 CPY LLNGTH BCS ZEILEN_INC LDA (STMCUR),Y STA STATE_LEN INY LDA (STMCUR),Y INY STY STATE_NDX JSR JUMP_CMD_TAB LDY STATE_LEN LDA BRKKEY BNE ?L1 BREAK_KEY JMP BRK_BAS_V JUMP_CMD_TAB ASL STA COMMAND_PTR+1 COMMAND_PTR JMP (COMMANDS_TAB) ZEILEN_INC LDY #$01 LDA (STMCUR),Y BMI ?L2 CLC LDA LLNGTH ADC STMCUR STA STMCUR BCC ?L1 INC STMCUR+1 ?L1 LDA (STMCUR),Y BPL L0984 JMP END_CMD ?L2 JMP L0950 ;------------------------------ ; ENDE PART 15 ;------------------------------